通过下面的链接,但它部分解决了我的问题。
merge multiple TRUE/FALSE columns into one
Combining a matrix of TRUE/FALSE into one
R: Converting multiple boolean columns to single factor column
我有一个数据框架,看起来像:
dat <- data.frame(Id = c(1,2,3,4,5,6,7,8),
A = c('Y','N','N','N','N','N','N','N'),
B = c('N','Y','N','N','N','N','Y','N'),
C = c('N','N','Y','N','N','Y','N','N'),
D = c('N','N','N','Y','N','Y','N','N'),
E = c('N','N','N','N','Y','N','Y','N')
)
我想用一列来重塑我的df,但是当一行中有2个“y”时,它必须给出优先级。
优先级是a>b>c>d>e,这意味着如果它们在a中是“y”,则结果值应该是a。同样,在上面的示例中,df c和d都有“y”,但结果df中应该有“c”。
因此,输出应如下所示:
resultant_dat <- data.frame(Id = c(1,2,3,4,5,6,7,8),
Result = c('A','B','C','D','E','C','B','NA')
)
我尝试过:
library(reshape2)
new_df <- melt(dat, "Id", variable.name = "Result")
new_df <-new_df[new_df$value == "Y", c("Id", "Result")]