R:如何根据矢量组将组名填充到数据框?

时间:2015-12-30 23:26:29

标签: r

我想根据另一列的值向我的df添加一个新列,其中包含组名(来自外部向量)。我不知道它是否很好解释,所以请看下面的例子。

这里有一些示例数据:

df <- structure(list(Values = c(0, 0, 0, 129906, 0, 0, 0), code = c("217", 
"220", "221", "222", "223", "224", "225")), .Names = c("Values", 
"code"), row.names = c(NA, -7L), class = "data.frame")

和组作为向量:

fruits <- c(221,222,223)
nuts <- c(220,224)
veggies <- c(217,225)

我的预期结果是:

  Values code  groups
1      0  217 veggies
2      0  220    nuts
3      0  221  fruits
4 129906  222  fruits
5      0  223  fruits
6      0  224    nuts
7      0  225 veggies

到目前为止,我使用了一种非常复杂的方法:

df_fruits <- df$code %in% fruits
df_veggies <- df$code %in% veggies
df_nuts <- df$code %in% nuts
df_group <- cbind(df_fruits, df_veggies, df_nuts)
df_group[,1] <- gsub('TRUE', 'fruits', df_group[,1])
df_group[,2] <- gsub('TRUE', 'veggies', df_group[,2])
df_group[,3] <- gsub('TRUE', 'nuts', df_group[,3])
df_group <- gsub('FALSE', 'NA', df_group)
df_group <- apply(df_group, 1, function(x) paste(gsub("NA", "", x), collapse = ""))
df[,"group"] <- df_group

如何简化此任务?感谢

2 个答案:

答案 0 :(得分:3)

您可以使用

df$groups[df$code %in% fruits] <- 'fruits'
df$groups[df$code %in% veggies] <- 'veggies'
df$groups[df$code %in% nuts] <- 'nuts'

答案 1 :(得分:3)

我们可以使用GridLayoutManager manager = new GridLayoutManager(this, 10); // 3 cols of 3 + 1 col of 1 manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { if (position % 4 == 3) return 1; // Fourth column is 1x else return 3; // Remaining columns are 3x } }); recyclerView.setLayoutManager(manager); 执行此操作。我们将merge放在vectors中,使用list转换为2列'data.frame',然后使用原始数据集转换为stack

merge