2013-02-21 97 views
2

如果某列有特定內容(但不是確切的內容,而不是正確的內容),我正嘗試更改R-dataframe中的一列。更改數據幀中的列其中

例如:現在

df: 
Name  City   Age 
Peter  Fort Wayne  15 
John  South Bend  20 
Christopher Boston   25 
Andy  Boston   30 
Johnathan Los Angeles  35 

,如果我想改變這一切的人的名字開始與約翰的時候,我通常會說選擇它們:

subset(df, grepl("^John", Name)) 

這將使我

Name  City   Age 
John  South Bend  20 
Johnathan Los Angeles  35 

但是,顯然我不能改變它使用

subset(df, grepl("^John", Name))$Age <- 20 

有沒有簡單的方法來做到這一點?我討厭從數據框中刪除行,然後重新插入它們,這是我迄今爲止所做的。

感謝您的幫助, 奧利弗

回答

6

嘗試:

df$Age[grepl("^John", df$Name)] <- 20 

subset返回data.frame,你不能分配20整個data.frame。相反,如上所示按列索引。

+0

當我這樣做,並分配一個字符/字符串,它告訴我「無效的因素水平,NAs生成」。有任何想法嗎? – oliver13 2013-02-21 16:19:21

+0

oliver,請使用'dput(head(df))'編輯您的原始文章,以便我處理這些數據以找出問題所在。 – Arun 2013-02-21 16:33:13