我在R中有典型的调查风格数据。多列有二进制 - 是/否 - 记录。我希望根据这些列创建一个单独的分类列。
我们将调用数据框架学校
PreK Kindergarten First Second Third Fourth ...
1 yes yes no no no no
2 no no yes yes yes yes
我希望新列看起来像这样
... Grades
1 prek, kg
2 elementary
我认为可能需要有很多嵌套的ifelse字符串。它最多可达14列,新的“等级”列需要具有足够的多样性以满足任何等级组合(例如6 - 12)。
我正在尝试根据现有列的值创建新列。那些现有列都是YES和NO(如checkmarks)。我希望新列能够反映将YES值组合在一起的类别。比如,在“第九”,“第十”,“第十一”和“第十二”栏中有一行是YES,我希望在新专栏中翻译成“高中”。
答案 0 :(得分:0)
我们可以使用apply
和MARGIN =1
来循环遍历行
df1$Grades <- apply(df1, 1, FUN = function(x) {
i1 <- x=="yes"
if(any(i1[-(1:2)])) "elementary" else toString(tolower(names(df1)[i1]))})
df1 <- structure(list(PreK = c("yes", "no"), Kindergarten = c("yes",
"no"), First = c("no", "yes"), Second = c("no", "yes"), Third = c("no",
"yes"), Fourth = c("no", "yes")), .Names = c("PreK", "Kindergarten",
"First", "Second", "Third", "Fourth"), class = "data.frame",
row.names = c("1", "2"))