gpt4 book ai didi

r - 按条件交换多列中的值

转载 作者:行者123 更新时间:2023-12-01 23:22:29 28 4
gpt4 key购买 nike

我有一个这样的数据框:

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)

如果 df$IDX==F

我想交换 0 和 1 之间的字符

预期结果:

 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

关于r - 按条件交换多列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34227564/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com