是否有将多个列值折叠为1个因子的函数? 列2:4的每个记录都具有1个TRUE值。 记录的结果值应该是具有真值的列名。
输入数据框:
data <- data.frame(user=c(1,2,3,4), blue=c(T,F,T,F), green=c(F,F,F,T), red=c(F,T,F,F))
user blue green red
1 1 TRUE FALSE FALSE
2 2 FALSE FALSE TRUE
3 3 TRUE FALSE FALSE
4 4 FALSE TRUE FALSE
预期产出:
user color
1 1 blue
2 2 red
3 3 blue
4 4 green
答案 0 :(得分:3)
cbind(data[1], color = apply(data[-1], 1, function(x) names(data[-1])[x]))
user color
1 1 blue
2 2 red
3 3 blue
4 4 green
答案 1 :(得分:2)
建议您查看var checkUserAgent = navigator.userAgent;
if (checkUserAgent.match(/iPad/i) || checkUserAgent.match(/iPhone/i)) {
var checkBabyId1 = $('#babys_due_date_id').length > 0;
if (checkBabyId1 == true) {
$('#babys_due_date_id').find('input').prop('readonly', true);
}
}
包中的gather
功能。
tidyr
答案 2 :(得分:1)
你可以试试这个:
data$named.colors <- factor(apply(data[,2:4], 1, function(row) which(row == T)), labels = c("blue", "green", "red"))
它遍历每一行,找到真实的列,然后将其转换为一个因子。
答案 3 :(得分:0)
这是使用我维护的 qdapTools 包的方法:
library(qdapTools)
data[["color"]] <- unlist(counts2list(data[-1]))
## user blue green red color
## 1 1 TRUE FALSE FALSE blue
## 2 2 FALSE FALSE TRUE red
## 3 3 TRUE FALSE FALSE blue
## 4 4 FALSE TRUE FALSE green
如果您只想user
和color
使用data[c(1, 5)]