我有一张桌子,如下:
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
答案 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上。