2013-02-21 110 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