根据条件3在R中添加列

时间:2015-10-15 09:28:00

标签: r

问题是在满足条件时向数据框添加新列。当第一列是1时,然后是" hom"当0 1 a" het"应该输出。感谢任何帮助。

示例:

1  1  -->  hom
1  1  -->  hom
0  1  -->  het 
1  1  -->  hom
0  1  -->  het

3 个答案:

答案 0 :(得分:1)

尝试

 c('het', 'horn')[as.numeric(factor(do.call(paste, df1)))]
 #[1] "horn" "horn" "het"  "horn" "het" 

或者,如果第一列只是改变

 c('het', 'horn')[df1[,1]+1L]
 #[1] "horn" "horn" "het"  "horn" "het" 

数据

 df1 <- data.frame(V1 = c(1, 1, 0, 1, 0), V2= 1)

答案 1 :(得分:1)

如果这是唯一要检查的两个条件,那么仅检查数据帧的第一列就足够了

df <- data.frame(num1 = c(1,0,1), num2 = c(1,1,1))
ifelse(df$num1 == 1,"hom","het")
# [1] "hom" "het" "hom"

答案 2 :(得分:1)

你可以试试这个:

df1[,3] <- ifelse(xor(df1[,1],df1[,2]),"het","hom")
#> df1
#  V1 V2  V3
#1  1  1 hom
#2  1  1 hom
#3  0  1 het
#4  1  1 hom
#5  0  1 het

请注意,与@RonakShah的回答相反,这将为het组合返回1 0。我认为这似乎是合理的,但如果您能够澄清预期的输出是仅仅依赖于第1列还是依赖于两列中的值,那将会有所帮助,无论它们的顺序如何。此外,尚不清楚组合0 0的预期输出是什么。此代码将为hom返回0 0