【发布时间】:2017-12-14 19:44:29
【问题描述】:
我正在从 API 跟踪项目所花费的时间中提取数据,该项目的变量包括时间、客户、项目和 - 可能 - 描述项目的多个标签。但是,当我提取数据时,具有多个标签的条目会被复制到其他相同的行中,每行只有一个唯一的标签,如下所示:
duration client project tag
60 A X first
45 B Y second
45 B Y third
30 C Z fourth
如何在组合标签时删除重复的行?我的想法是这样的:
A)
duration client project tags
1 60 A X first
2 45 B Y second, third
3 30 C Z fourth
或者这个:
B)
duration client project tag1 tag2
1 60 A X first NA
2 45 B Y second third
3 30 C Z fourth NA
我也很感激关于哪种建议安排(A 或 B)最适合快速总结项目所花费的时间量的建议,例如标签“第一”和“第三”(例如 105 分钟)?
这是示例数据框:
df <- data.frame(
duration = c(60, 45, 45, 30),
client = c("A", "B", "B", "C"),
project = c("X", "Y", "Y", "Z"),
tag = c("first", "second", "third", "fourth")
)
我感谢任何建议(我觉得这对 dplyr/tidyr 来说应该不会太难,但还不能完全正确)。谢谢!
【问题讨论】:
-
时长数据应该如何处理?
-
除标签外的所有内容都是行之间的完全重复,应替换/删除,例如客户 B/项目 X 的持续时间为 45 分钟,而不是 90 分钟。这是否回答了您的问题,还是我误解了?
-
如果标签数量有限,可以reshape df获取标签为列名
require(tidyr) spread(df, key = tag, value = project) -
不同的建议:制作两张表
projDF = unique(df[c("client", "project", "duration")]); tagDF = df[c("project", "tag")]或任何适当的列选择。 (然后您可以使用left_join或类似的方法来组合表格以进行任何分析。)