我想根据另一列的值向我的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
如何简化此任务?感谢
答案 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