2016-04-07 4 views
1

Я новичок в этой группе (а также совершенно новый пользователь R), и у меня есть вопрос. У меня есть data.table как этотИзменение имени полей в R

Date    V2      Deal Type 
----------------- 

1: 2009-1  Public sector bank  Corporate Bond-Investment-Grade     
2: 2009-1  Private sector bank  Corporate Bond-Investment-Grade     
3: 2009-7  Private sector industrial Corporate Bond-Investment-Grade     
4: 2009-1  Private sector bank  Corporate Bond-Investment-Grade     
5: 2009-1  Private sector bank  Covered Bond       
6: 2009-1  Public sector bank  Corporate Bond-Investment-Grade     
7: 2009-1  Private sector bank  Corporate Bond-Investment-Grade 

Вопрос в том, как изменить имена переменных (и переменных) в колонке V2. Например, я хочу, чтобы «банк государственного сектора» и «банк частного сектора» появлялись в новом столбце как «финансовый» и «промышленный сектор частного сектора» и «промышленный сектор» как «нефинансовые». Надеюсь, я был достаточно ясен. Большое спасибо за Вашу помощь.

+0

Возможный дубликат http://stackoverflow.com/questions/7531868/how-to-rename-a-single-column-in -a-data-frame-in-r, http://stackoverflow.com/questions/5824173/replace-a-value-in-a-data-frame-based-on-a-conditional-if-statement-in -r и т. д. –

+0

При использовании пакета data.table Я рекомендую их официальный чит-лист https://s3.amazonaws.com/assets.datacamp.com/img/blog/data+table+cheat+sheet.pdf – Berecht

ответ

0

Если предположить, что dataframe называется DF, вы могли бы сделать что-то вроде:

df <- read.csv("data.csv", stringsAsFactors=FALSE) 

df$newColumn[df$V2 == "Public sector bank" | df$V2 == "Private sector bank"] <- "financial" 
df$newColumn[df$V2 == "Public sector industrial" | df$V2 == "Private sector industrial"] <- "non-financial" 

или, если вы уверены, что ваши поля V2 есть слова «банк» и «промышленные» в них, и то, как вы определить, что называть значения в новом столбце, вы можете сделать это:

df$newColumn[grepl("bank", df$V2)] <- "financial" 
df$newColumn[grepl("industrial", df$V2)] <- "non-financial" 

Это работает так же, как с таблицами данных, а

0

если DT ваш data.table

`DT[,':='(V3 = ifelse(V2 %in% c("Public sector bank","Private sector bank"),"Non financial","Financial")`] 

Это, как правило, хорошая практика, чтобы нормализовать текстовые поля, так что вы могли бы рассмотреть:

DT[,':='(V3 = ifelse(tolower(gsub(" ","",V2)) %in% c("publicsectorbank","privatesectorbank"),"Non financial","Financial")] 

Надеется, что это поможет, я также рекомендую https://s3.amazonaws.com/assets.datacamp.com/img/blog/data+table+cheat+sheet.pdf

1

заменить() может быть удобны в этот сценарий. Если предположить, что dataframe, как DF и ваш новый столбец в V2new:

# Creating new column V2new and replacing "Public/Private sector bank" to "financial" 
DF$V2new <- replace(DF$V2 ,DF$V2 =="Public sector bank"|DF$V2=="Private sector bank","financial") 
# Replacing "Public/Private sector industrial" from V2new to "non-financial" 
DF$V2new <- replace(DF$V2new ,DF$V2new =="Public sector industrial"|DF$V2new =="Private sector industrial","non-financial") 
Смежные вопросы