R 如何根据标准向数据帧添加新的观察值?
我有一个多时间段内多个站点的结果表(test.df)。其中一个土壤参数分为两个参数(滴滴涕2和滴滴涕4)。我想把这些加在一起,并将它们添加回数据帧中 我可以这样总结这些结果:R 如何根据标准向数据帧添加新的观察值?,r,tidyverse,R,Tidyverse,我有一个多时间段内多个站点的结果表(test.df)。其中一个土壤参数分为两个参数(滴滴涕2和滴滴涕4)。我想把这些加在一起,并将它们添加回数据帧中 我可以这样总结这些结果: test1 <- test %>% select(Sample,Site,Parameter,Value) %>% filter(str_detect(Parameter,"DDT")) test1 %>% group_by(Sample,Site) %>% cou
test1 <- test %>%
select(Sample,Site,Parameter,Value) %>%
filter(str_detect(Parameter,"DDT"))
test1 %>%
group_by(Sample,Site) %>%
count(sum(Value))
Sample Site Parameter Value
2014-01-27 3999 Soil 2,4'-DDT 0.010
2014-01-27 3999 Soil 4,4-DDT 0.020
2014-01-27 3999 Soil 4,4 EC 0.020
2014-01-27 3999 Total DDT 0.030
2013-01-31 4040 Soil 2,4'-DDT 0.010
2013-01-31 4040 Soil 4,4-DDT 0.010
2014-01-27 4040 Soil 4,4 EC 0.020
2013-01-31 4040 Total DDT 0.020
我想对每个站点的滴滴涕值进行求和,并将其加回到表中,如下所示:
test1 <- test %>%
select(Sample,Site,Parameter,Value) %>%
filter(str_detect(Parameter,"DDT"))
test1 %>%
group_by(Sample,Site) %>%
count(sum(Value))
Sample Site Parameter Value
2014-01-27 3999 Soil 2,4'-DDT 0.010
2014-01-27 3999 Soil 4,4-DDT 0.020
2014-01-27 3999 Soil 4,4 EC 0.020
2014-01-27 3999 Total DDT 0.030
2013-01-31 4040 Soil 2,4'-DDT 0.010
2013-01-31 4040 Soil 4,4-DDT 0.010
2014-01-27 4040 Soil 4,4 EC 0.020
2013-01-31 4040 Total DDT 0.020
我希望这种方法对您有用:
data<- data.frame(Sample= c("2014-01-27","2014-01-27","2013-01-01","2013-01-01"),
SiteID= c(3999,3999,4040,4040),
DetDesc= c("Soil 2,4-DDT", "Soil 4,4-DDT","Soil 2,4-DDT", "Soil 4,4-DDT"),
Value= c(0.010, 0.02, 0.010, 0.01)
)
library(dplyr)
data %>% group_by(SiteID, Sample) %>%
summarise(Value = sum(Value)) %>%mutate(DetDesc = "Total DDT")%>%
select(Sample, SiteID, DetDesc, Value ) %>% bind_rows(data)
# A tibble: 6 x 4
# Groups: SiteID [2]
Sample SiteID DetDesc Value
<fct> <dbl> <chr> <dbl>
1 2014-01-27 3999 Total DDT 0.03
2 2013-01-01 4040 Total DDT 0.02
3 2014-01-27 3999 Soil 2,4-DDT 0.01
4 2014-01-27 3999 Soil 4,4-DDT 0.02
5 2013-01-01 4040 Soil 2,4-DDT 0.01
6 2013-01-01 4040 Soil 4,4-DDT 0.01
data%group\u by(SiteID,Sample)%>%
总结(值=总和(值))%%>%突变(DetDesc=“Total DDT”)%%>%
选择(示例、站点ID、DetDesc、值)%>%bind\u行(数据)
#一个tibble:6x4
#组:SiteID[2]
示例SiteID DetDesc值
1 2014-01-27 3999滴滴涕总量0.03
2 2013-01-01 4040滴滴涕总量0.02
3 2014-01-27 3999土壤2,4-DDT 0.01
4 2014-01-27 3999土壤4,4-DDT 0.02
5 2013-01-01 4040土壤2,4-DDT 0.01
6 2013-01-01 4040土壤4,4-DDT 0.01
如果您希望它也不按Sample
列分组,只需将其删除即可。
干杯 谢谢你,查尔斯,效果很好。最初的df有许多我没有显示的其他列。我注意到,当我将_行绑定回我的原始df时,这些属性被分配了一个NA…有没有其他方法来保留这些信息?如果两种情况下的列数相同,并且两种情况下的colname相同,那么您就可以这样做。您可以先使用cbind()创建具有所需长度的向量,然后使用rbind()创建向量