【发布时间】:2021-09-20 17:08:02
【问题描述】:
我已经在这个问题上纠结了好几次了,我想问这个问题可能更省时。答案可能是我不知道的相对简单的事情,因为这似乎是一项常见的任务,尽管我找不到类似的在线示例。
在人们完成的活动列表中,我试图获得一个精简的活动计数列表,因为 group_by(Person) %>% summarise() 将用于每个人。我正在努力实现以下最终结果:
每行 1 人
列(每个人):
-总活动
-每种类型的总数
-每个子类型的总数(计算类型+子类型的组合无关紧要)
-每个月的总数(所以每个月都是一列)
-每个月的总类型计数(12 mos X 2 Types = 24 列)
-每个月的子类型总数 (12 mos X 3 个子类型 = 36 列)
如果一个月没有计数(如示例中没有 7 月至 12 月),则需要读取 0,即不排除该月。
activities <- data.frame(
Person = c(rep("Person A", 3), rep("Person B", 3)),
Month = seq(as.Date("2020/1/1"), by = "month", length.out = 6),
Activity.Type = as.factor(seq(1:2)),
Activity.Sub.Type = as.factor(seq(1:3))
)
activities
所有月份的列可能看起来很奇怪,但我将这些数据添加到回归模型中每个人的年度生产力指标中。这似乎是为该用例构建所有内容的最佳方式。
如果您有任何问题,请告诉我,感谢您的帮助。
【问题讨论】:
-
你需要
activities %>% group_by(Person) %>% summarise(across(where(is.factor), nlevels), n = n()) -
您确定要每人一排吗?当您说 “如果一个月没有计数(因为在示例中没有 7 月至 12 月),它需要读取 0 即不排除该月。” 听起来就像您希望每个人每月一排一样。您需要
group_by人和月。 -
非常感谢!活动 %>% group_by(Person) %>% summarise(across(where(is.factor), nlevels), n = n()) 似乎产生了每个人独特活动类型的数量,而不是计数对于每个活动类型。这不是问题的要求。 Gregor:这很有道理,你可能正在做某事。在那种情况下,我仍然不确定如何连续几个月没有活动,例如示例中为 7 月至 12 月。
-
感谢您分享数据,但如果您也分享预期的输出,这将非常有帮助,这样我们就可以将我们的答案与他们进行比较,并为您提供您正在寻找的确切信息。跨度>