用不同的列值替换数据框中的字符串

时间:2015-12-09 05:25:03

标签: r string replace

我的数据框看起来像:

 Tester Type    Subject Type    Time        1     2     3
 TType1         SType1          Day 1       11    2     1         
 TType1         SType2          Day 1       3     2     13
 TType1         SType1          Day 2       2     3     15
 TType2         SType3          Day 2       1     4     3
 TType3         SType3          Day 2       2     3     4
 TType1         SType1          Day 1       7     2     2
 TType2         SType1          Day 2       2     6     7

我正在尝试在“主题类型”列中找到所有SType 1,并将其替换为“测试程序类型”中的值。所以,我的输出看起来像:

 Tester Type    Subject Type    Time        1     2     3
 TType1         TType1          Day 1       11    2     1         
 TType1         SType2          Day 1       3     2     13
 TType1         TType1          Day 2       2     3     15
 TType2         SType3          Day 2       1     4     3
 TType3         SType3          Day 2       2     3     4
 TType1         TType1          Day 1       7     2     2
 TType2         TType2          Day 2       2     6     7

2 个答案:

答案 0 :(得分:2)

我们可以使用ifelse

ifelse(df$SubjectType == "SType1", df$TesterType, df$SubjectType)
# [1] "TType1" "SType2" "TType1" "SType3" "SType3" "TType1" "TType2"

假设df为您的数据框。

答案 1 :(得分:2)

我们可以使用data.table。我们将'data.frame'转换为'data.table'(setDT(df1)),使用逻辑条件为'i',我们分配(:=)'SubjectType'对应于中的行'我'为'TesterType'。

library(data.table)
setDT(df1)[SubjectType=='SType1', SubjectType := TesterType]
df1
#   TesterType SubjectType  Time X1 X2 X3
#1:     TType1      TType1 Day 1 11  2  1
#2:     TType1      SType2 Day 1  3  2 13
#3:     TType1      TType1 Day 2  2  3 15
#4:     TType2      SType3 Day 2  1  4  3
#5:     TType3      SType3 Day 2  2  3  4
#6:     TType1      TType1 Day 1  7  2  2
#7:     TType2      TType2 Day 2  2  6  7