【问题标题】:Change column in dataframe where更改数据框中的列
【发布时间】:2013-02-06 23:39:48
【问题描述】:

如果某列具有特定内容(但是,不是确切的内容,而是我使用正则表达式找到的内容),我正在尝试更改 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

有没有简单的方法来做到这一点?我不想从数据框中删除行然后重新插入它们,这是我迄今为止一直在做的事情。

感谢您的帮助, 奥利弗

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    试试:

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

    subset 返回一个data.frame,您不能将20 分配给整个data.frame。相反,按列索引,如上所示。

    【讨论】:

    • 当我这样做并分配一个字符/字符串时,它告诉我“无效的因子级别,生成了 NA”。有什么想法吗?
    • oliver,请使用 dput(head(df)) 编辑您的原始帖子,以便我处理数据以找出问题所在。
    猜你喜欢
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多