R - 用一个值替换data.frame中的多个值

时间:2018-03-13 14:39:47

标签: r

我正在使用R并希望在data.frame中替换多个值,从具有一个值的某些字母开始。

例如下面是我的数据框中的样本值,如XYZ1,XYZ2,XYZ3,XYZ4 ..等等,然后我想将所有以“XYZ”开头的值替换为“ABC”

实施例

df是数据框

 V1    V2   V3   V4 

XYZ1  XYZ2 XYZ4 XYZ10

XYZ3  RST1 WST3 XYZ11

这里(V1-V4)是我想要替换所有以“XYZ”开头的值变为“ABC”的列。

我想要的结果是

df< -

V1   V2   V3   V4 

ABC  ABC  ABC  ABC

ABC  RST1  WST3  ABC

单独我可以通过在将每个值转换为字符值后对每个列中的每个值使用==运算符来执行此操作,但是如何一次性将所有值转换为多个列?

2 个答案:

答案 0 :(得分:1)

希望这有帮助!

library(dplyr)

df %>%
  mutate_all(funs(gsub("XYZ.*","ABC",.)))
  #mutate_at(vars(V1:V4), funs(gsub("XYZ.*","ABC",.)))

输出为:

   V1   V2   V3  V4
1 ABC  ABC  ABC ABC
2 ABC RST1 WST3 ABC

示例数据:

df <- structure(list(V1 = c("XYZ1", "XYZ3"), V2 = c("XYZ2", "RST1"), 
    V3 = c("XYZ4", "WST3"), V4 = c("XYZ10", "XYZ11")), .Names = c("V1", 
"V2", "V3", "V4"), class = "data.frame", row.names = c(NA, -2L
))

答案 1 :(得分:0)

或使用gsub

AlarmGroup     AgentName
==========     ==========
GroupName        Thassos
NULL             Pythion
NULL             Metaxas
NULL             Metaxas
GroupName        Pilio