每个人。我已经弄清楚了如何基于满足数据框另一列中的某些条件来替换R中的值。但是,我编写的代码似乎将条件语句应用于基于条件的原始列。基本上,我希望在数据框的所有列中替换值,但我用来制作规则/条件的列除外。
这是样本数据(df):
C1 C2 C3 C4 C5 C6 C7 C8
0 0 0 0 0 Y 0 0
0 0 0 0 0 0 0 Y
0 0 0 0 0 0 0 Y
0 0 0 0 0 0 0 Y
0 0 Y 0 0 0 0 Y
0 0 0 0 0 0 0 Y
0 0 0 0 0 0 0 Y
Y Y Y Y Y Y Y Y
0 0 0 0 0 0 0 Y
0 0 0 0 0 0 0 Y
0 0 Y 0 0 Y 0 Y
0 0 Y 0 0 0 0 Y
0 0 0 0 0 0 0 Y
0 0 0 0 0 Y 0 0
0 0 0 0 0 0 0 Y
0 0 0 0 0 0 Y 0
我希望对每一行都满足以下条件:如果列C6中的值为“ Y”,则我希望其余列中的值都以0s进行转换。
df[df$C6 == "Y",] = 0 # Most common code I found on SO to accomplish this
当我执行上面的代码行时,它也将此规则应用于列C6(将C6中的“ Y”更改为0)。我不希望这样-我想在其他列中进行替换时将值保留在C6中。关于如何做到这一点的任何建议?
谢谢!
在列选择上使用负索引:
df[df$C6 == "Y", -match("C6",names(df))] <- 0
# C1 C2 C3 C4 C5 C6 C7 C8
#1 0 0 0 0 0 Y 0 0
#2 0 0 0 0 0 0 0 Y
#3 0 0 0 0 0 0 0 Y
#4 0 0 0 0 0 0 0 Y
#5 0 0 Y 0 0 0 0 Y
#6 0 0 0 0 0 0 0 Y
#7 0 0 0 0 0 0 0 Y
#8 0 0 0 0 0 Y 0 0
# ....
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句