R:将指标列映射到构成该列的内容

时间:2019-03-20 22:19:25

标签: r dictionary mapping

我正在用R进行编码,并且有一个用于以下区域的数据框:

data <- data.frame(Region = c("Cali", "NYC", "LA", "Vegas"), 
                   Group = c(1,2,2,1), stringsAsFactors = F)

enter image description here

该地区已组成一个小组。组列告诉哪些区域是组的一部分。我如何编码,当我有了组信息时,就可以找到构成该组的区域。任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:1)

因此,举一个小而可重复的示例,

data <- data.frame(Region = c("Cali", "NYC", "LA", "Vegas"), Group = c(1,2,2,1),stringsAsFactors=F)

我们看到以下结果,说我们希望全部来自组1

group.number = 1
data[data$Group == group.number,"Region"]
[1] Cali  Vegas

或使用dpyr

library(dplyr)
group.number = 1
data %>%
  filter(Group == group.number)%>%
.$Region

或者来自Jilber Urbina(可读性更高)

subset(data, Group==1)$Region

答案 1 :(得分:1)

最重要的是,对于以后的帖子,请

  1. 使用例如可重现和可复制粘贴的格式包含样本数据dput
  2. 不要添加多余的陈述,例如“这一条非常紧急!”

关于您的问题,首先我将生成一些示例数据

set.seed(2018)
df <- data.frame(
    Region = sample(letters, 10),
    Group = sample(1:3, 10, replace = T))

我建议按Group汇总/汇总数据,这样可以轻松提取特定Group的信息。

例如,在基数R中,您可以基于Group聚合数据,并将每个Region的所有Group连接起来

aggregate(Region ~ Group, data = df, FUN = toString)
#  Group        Region
#1     1             m
#2     2    i, l, g, c
#3     3 b, e, k, r, j

或者,您也可以将每个Region的所有Group存储在list

aggregate(Region ~ Group, data = df, FUN = list)
#  Group        Region
#1     1             m
#2     2    i, l, g, c
#3     3 b, e, k, r, j

请注意,尽管输出看起来相同,但是toString创建一个character字符串,而listRegion存储在list中。后者可能是下游处理的更好格式。


使用dplyr

可以实现类似的输出
library(dplyr)
df %>%
    group_by(Group) %>%
    summarise(Region = toString(Region))