我有一个数据帧, dd
Var1 Freq
76 2189- 1181
458 6186- 813
445 6170- 738
902 61801 650
74 2181- 618
504 6268- 509
905 61804 307
500 6259- 272
910 61889 265
495 6253- 242
73 2180- 224
510 6256- 6407
461 6180- 3254
792 2333
1 2312
467 6186- 2259
212 4019- 1254
4561 6170- 1162
462 6181- 1156
80 2189- 1154
465 6184- 1035
Run Code Online (Sandbox Code Playgroud)
我想在Var1列中搜索重复项并将它们组合起来,在列中创建一个频率之和,Freq以便......
Var1 Freq
76 2189- 2335
458 6186- 3072
445 6170- 1900
902 61801 650
74 2181- 618
504 6268- 509
905 61804 307
500 6259- 272
910 61889 265
495 6253- 242
73 2180- 224
510 6256- 6407
461 6180- 3254
792 2333
1 2312
212 4019- 1254
462 6181- 1156
465 6184- 1035
Run Code Online (Sandbox Code Playgroud)
注:所以你不必去寻找差异,在Var1合并值分别为2189-,6186-,和6170-.
我想这可以用一些花哨的工作来完成[]和duplicated(),但我似乎无法环绕它我的头.我很感激任何指导.
在dput此数据可以在引擎收录发现.
这可以简单地完成
aggregate(Freq ~ Var1, dd, sum)
Run Code Online (Sandbox Code Playgroud)
或者 data.table
library(data.table)
setDT(dd)[, .(Freq = sum(Freq)), by = Var1]
Run Code Online (Sandbox Code Playgroud)
或者 dplyr
library(dplyr)
dd %>%
group_by(Var1) %>%
summarise(Freq = sum(Freq))
Run Code Online (Sandbox Code Playgroud)
虽然这也会将空条目加起来"",但不清楚为什么要区别对待它们
无论哪种方式,使用data.table您都可以达到您的确切输出
setDT(dd)[, if(Var1 == "") .SD else sum(Freq), by = Var1]
# Var1 V1
# 1: 2189- 2335
# 2: 6186- 3072
# 3: 6170- 1900
# 4: 61801 650
# 5: 2181- 618
# 6: 6268- 509
# 7: 61804 307
# 8: 6259- 272
# 9: 61889 265
# 10: 6253- 242
# 11: 2180- 224
# 12: 6256- 6407
# 13: 6180- 3254
# 14: 2333
# 15: 2312
# 16: 4019- 1254
# 17: 6181- 1156
# 18: 6184- 1035
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |