r - 列中唯一值的总和
问题描述
在满足某些条件后,我想每年获得一列中唯一值的总和。
这是我来自 dput 的数据:
structure(list(key = structure(c(1L, 1L, 4L, 2L, 3L, 4L, 2L,
3L, 5L, 5L, 8L, 6L, 7L, 8L, 6L, 7L), .Label = c("1992_10_18_0",
"1992_10_18_12", "1992_10_18_18", "1992_10_18_6", "1993_10_18_0",
"1993_10_18_12", "1993_10_18_18", "1993_10_18_6"), class = "factor"),
RR = c(43.25, 43.25, 43.25, 43.25, 43.25, 43.25, 43.25, 43.25,
43.25, 43.25, 43.25, 43.25, 43.25, 43.25, 43.25, 43.25),
dist = c(1000.23361607017, 694.022935174544, 748.618896699399,
812.290633745208, 869.896619169459, 1136.88564181537,
1058.59136791648,
975.756885299645, 1000.23361607017, 694.022935174544,
748.618896699399,
812.290633745208, 869.896619169459, 1136.88564181537,
1058.59136791648,
975.756885299645), Year = c(1992L, 1992L, 1992L, 1992L, 1992L,
1992L, 1992L, 1992L, 1993L, 1993L, 1993L, 1993L, 1993L, 1993L,
1993L, 1993L)), class = "data.frame", row.names = c(NA, -16L
))
我想要的是:
数据中有四列:key、RR、dist 和 Year。
我想根据每年唯一的“关键”值获得 RR 的总和,使得“dist”小于或等于 1100。
到目前为止我所拥有的:
我正在处理多个文件,所以脚本是这样的:
dat<-read.csv("test_dat.csv",header=T,stringsAsFactors=FALSE)
dat2<-dat[which(dat$dist <= 1100),]
dat3<-as.data.frame(cbind(dat2$RR,dat2$Year))
colnames(dat3)<-c("RR","Year")
agg<-aggregate(.~Year,dat3,sum,na.rm=T)
write.csv(agg,file="test.csv",row.names=T)
关于如何在 R 中做到这一点的任何想法?我会很感激任何帮助。
解决方案
您可以通过aggregate
您使用过的函数结合以下函数来完成此操作unique
:
agg <- aggregate(key ~ Year, data=subset(dat, dist <= 1100), FUN=function(x) length(unique(x)))
或者,在完整的上下文中:
dat<-read.csv("test_dat.csv",header=T,stringsAsFactors=FALSE)
agg <- aggregate(key ~ Year, data=subset(dat, dist <= 1100), FUN=function(x) length(unique(x)))
write.csv(agg,file="test.csv",row.names=T)
在此示例中,生成的输出为:
Year key
1 1992 4
2 1993 4
推荐阅读
- python - 如何使用正则表达式 python 部分搜索单词
- android - Android AppCompActivity 工具栏未显示
- openmaptiles - 192天打造欧式瓷砖
- python - Python 中的 BrokenPipeError 但在 Perl 中没有
- python - 根据pandas中另一列中不同数组中元素的值获取列中数组的元素
- core-data - 未显示折线图数据
- r - lapply 如果在 data.table 中
- html - 仅针对较窄的屏幕修改内部 href 链接
- localization - 将 System.Globalization.DateTimeFormatInfo 短日期格式转换为 Windows.Globalization.DateTimeFormatting.DateTimeFormatter
- delphi - 在 Delphi 中更改单元的初始化顺序