从多个现有列的输入在R中创建一个新列

时间:2016-07-19 19:43:56

标签: r dataframe

我在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,我希望在新专栏中翻译成“高中”。

1 个答案:

答案 0 :(得分:0)

我们可以使用applyMARGIN =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"))