如果某个列具有特定内容(但不是确切的内容,而是我在Regex中找到的内容),我试图更改R数据框中的一列。
例如:
df:
Name City Age
Peter Fort Wayne 15
John South Bend 20
Christopher Boston 25
Andy Boston 30
Johnathan Los Angeles 35
现在,如果我想改变名字以John开头的所有人的年龄,我通常会说:
subset(df, grepl("^John", Name))
哪会给我
Name City Age
John South Bend 20
Johnathan Los Angeles 35
然而,显然我无法使用
更改它 subset(df, grepl("^John", Name))$Age <- 20
有一种简单的方法吗?我不想从数据帧中删除行,然后重新插入它们,这是我到目前为止所做的。
感谢您的帮助, 奥利弗
答案 0 :(得分:6)
尝试:
df$Age[grepl("^John", df$Name)] <- 20
subset
会返回data.frame
,您无法将20
分配给整个data.frame
。而是按列显示索引。