R语言:如何修改dataframe指定列中的单个条目值?
解决方法
你之前用rename()函数的思路完全错了——这个函数是用来重命名数据框的列名的,根本不是用来修改列内具体单元格值的,所以才会触发报错。要修改ID列中特定的字符串值,得用专门修改列内容的函数,结合你使用的tidyverse工具包,这里给你两种可行方案:
方案1:用dplyr::mutate() + replace()
# 明确指定dplyr的函数,避免和plyr的同名函数冲突 sample_modified <- sample %>% dplyr::mutate(ID = replace(ID, ID == "AB1900", "001"))
replace()会精准定位ID列中等于"AB1900"的元素,将其替换成"001",其他值保持不变- 因为要保留"001"作为字符串(如果不加引号转成数字的话会变成1),所以替换的值必须加引号
方案2:用dplyr::mutate() + case_when()
如果之后还需要修改其他值,这种方式扩展性更强:
sample_modified <- sample %>% dplyr::mutate(ID = dplyr::case_when( ID == "AB1900" ~ "001", # 可以在这里继续加其他替换规则,比如 ID == "XYZ2000" ~ "002", TRUE ~ ID # 所有不匹配规则的值保持原样 ))
重要提醒
你同时加载了plyr和dplyr,这两个包有不少同名函数(比如mutate、rename),建议始终用dplyr::前缀指定使用dplyr的函数,避免因函数遮蔽出现莫名其妙的错误。
内容的提问来源于stack exchange,提问作者Erefin
相关产品推荐
相关产品推荐

