您好我有许多具有不同类别类型的类似数据集。我已经决定将某些数据集中的哪些类别组合在一起以放入1个统一类别。我正在寻找一种方法将这些不同的行分组为一个统一的行。
例如,在数据集1中,它具有称为“刑事损害”的犯罪类型。
在我的数据集2中,我希望标题为“类别”的列中的“对财产造成恶意破坏”和“Arson”的行在一个新行中组合在一起,信息相同(省,站)但是类别列值为“刑事损害”,并将年份X2008 X2009等的值添加到一起,以便与我的其他数据集对齐。 同样的情况:居民房屋的入室盗窃和非住宅房屋的入室盗窃应归为“入室盗窃”。 还有:在酒精或毒品的影响下驾驶以及非法持有枪支和弹药应归为“其他值得注意的罪行”。
以下是需要转换的数据示例:
Province Station Category X2008 X2009 X2010 X2011 X2012 X2013
Kwazulu/Natal Phoenix Malicious damage to property 778 883 767 754 804 785
Kwazulu/Natal Phoenix Arson 16 24 13 26 12 9
North West Phokeng Malicious damage to property 243 235 154 187 153 156
North West Phokeng Arson 12 13 12 9 6 6
Eastern Cape Adelaide Burglary at residential premises 103 93 89 73 75 53
Eastern Cape Adelaide Burglary at non-residential premises 20 13 22 20 19 26
North West Mogwase Driving under the influence of alcohol or drugs 37 36 31 38 24 18
North West Mogwase Illegal possession of firearms and ammunition 18 8 12 12 12 13
要变成这样的东西:
Province Station Category X2008 X2009 X2010 X2011 X2012 X2013
Kwazulu/Natal Phoenix Criminal damage 794 897 780 780 816 794
North West Phokeng Criminal damage 255 248 166 196 159 162
Eastern Cape Adelaide Burglary 123 106 111 93 94 79
North West Mogwase Other notable offences 55 44 43 50 36 31
任何帮助都会非常感激!我如此坚持如何去做这件事。谢谢!
答案 0 :(得分:2)
我们可以group_by
使用Category
作为"刑事损害"`
library(dplyr)
df1 %>%
group_by(Province, Station, Category = "Criminal damage") %>%
summarise_all(sum)
#A tibble: 2 x 9
# Groups: Province, Station [?]
# Province Station Category X2008 X2009 X2010 X2011 X2012 X2013
# <chr> <chr> <chr> <int> <int> <int> <int> <int> <int>
#1 Kwazulu/Natal Phoenix Criminal damage 794 907 780 780 816 794
#2 North West Phokeng Criminal damage 255 248 166 196 159 162
答案 1 :(得分:0)
一种方式(尽管可能效率不高)你可以通过重命名每个类别以匹配新的组合类别(请参阅this回答),然后使用group_by()
进行分组,如akrun所说。
df1$Category[df1$Category == "Burglary at residential premises"] <- "Burglary"
df1$Category[df1$Category == "Burglary at non-residential premises"] <- "Burglary"
(依此类推)
然后使用dplyr
的{{1}}查找每个省,地区和类别的所有犯罪的总和。