我有一个像这样的数据框:
df = read.table(text="IDX D1 D2 D3 D4 D5 D6 D7
F 0/0 1/1 0/0 0/1 1/1 0/0 0/0
F 1/1 0/0 0/0 0/0 0/0 1/1 0/0
T 0/0 0/0 0/0 0/0 0/0 0/0 0/0
T 0/1 0/1 0/0 1/1 0/1 0/0 0/1
F 1/1 0/1 1/1 0/0 0/1 0/0 0/0", header=T, stringsAsFactors=F)
我想在0和1之间交换字符,如果 df$IDX==F
预期结果:
IDX D1 D2 D3 D4 D5 D6 D7
F 1/1 0/0 1/1 1/0 0/0 1/1 1/1
F 0/0 1/1 1/1 1/1 1/1 0/0 1/1
T 0/0 0/0 0/0 0/0 0/0 0/0 0/0
T 0/1 0/1 0/0 1/1 0/1 0/0 0/1
F 0/0 1/0 0/0 1/1 1/0 1/1 1/1
这是一种可行的方法lapply
:
#subsetting the df to just replace the elements we need
df[df$IDX==FALSE, -1] <- lapply(df[df$IDX==FALSE, -1], function(x) {
#chartr is translates specific characters to different ones
#here it converts 0s -> 1s and vice versa
chartr("01", "10", x)
})
输出:
> df
IDX D1 D2 D3 D4 D5 D6 D7
1 FALSE 1/1 0/0 1/1 1/0 0/0 1/1 1/1
2 FALSE 0/0 1/1 1/1 1/1 1/1 0/0 1/1
3 TRUE 0/0 0/0 0/0 0/0 0/0 0/0 0/0
4 TRUE 0/1 0/1 0/0 1/1 0/1 0/0 0/1
5 FALSE 0/0 1/0 0/0 1/1 1/0 1/1 1/1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句