根据R中的另一列创建一个新列

时间:2018-12-29 17:34:29

标签: r

我有一张桌子,如下:

Name   ID   Level
Name1   A     1
Name2   B     2
Name3   C     3
Name4   D     1
Name5   E     2
Name6   F     1

有人知道我如何在R中创建另一列,该列实际上是在Col“ Level”上,我可以在其中突出显示特定行属于其上方的1级。例如在上面的示例中,名称2和名称3与名称1属于同一组;名称5属于名称4组。

我可以使用if语句在Excel中执行此操作,但如果可以在R中执行所有操作,则效果会更好。否则,仅在Excel中创建分组然后将其导出到R中可能会更容易。

我希望它看起来像这样:

Name   ID   Level  Groupings
Name1   A     1    Name1
Name2   B     2    Name1
Name3   C     3    Name1
Name4   D     1    Name4
Name5   E     2    Name4
Name6   F     1    Name6
etc     etc   etc  etc 

1 个答案:

答案 0 :(得分:0)

这部分代码只是为了重新创建数据集示例:

data <- data.frame(Name = paste0('Name',1:6),
                   ID = LETTERS[1:6],
                   Level = c(1,2,3,1,2,1),
                   stringsAsFactors = FALSE) 

以下部分是使用 zoo 包中的na.locf()函数来解决问题的一种可能方法:

library(zoo)
data$Groupings <- ifelse(data$Level == 1, data$Name, NA)    
data$Groupings <- na.locf(data$Groupings)

对于将来有关代码问题的疑问,我建议您发布在Stack Overflow而不是Data Science上。