将多个观测值合并到R中的一列

xe55xuns  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(119)

我使用的是Covid19数据集,其中每行都包含Covid数据(测试,阳性,阴性,死亡,etc...)。这意味着每天都有多行,因为每个国家的数据都有自己的行。我尝试将数据泛化为每个 * 洲 * 每天只包含一行。有没有一种简单的方法可以对日期相同的所有列求和?
例如,我想从这样一张table...
| 日期|洲|国家|阳性|
| - ------|- ------|- ------|- ------|
| 2020年2月5日|欧洲|联合 Realm |十个|
| 2020年2月5日|欧洲|波兰|五个|
| 2020年2月5日|欧洲|瑞典|无|
| 2020年2月6日|欧洲|联合 Realm |十二|
| 2020年2月6日|欧洲|波兰|七|
| 2020年2月6日|欧洲|瑞典|1个|
变成这样的人。
| 日期|洲|阳性|
| - ------|- ------|- ------|
| 2020年2月5日|欧洲|十五|
| 2020年2月6日|欧洲|二十个|
我得到的最接近的消息是

covid19EU <- covid19 %>% filter(Continent_Name == "Europe") %>% group_by(Date) %>% summarise_all(max)

但这将返回最大值,而不是对同一日期的所有观测值求和,即
| 日期|洲|国家|阳性|
| - ------|- ------|- ------|- ------|
| 2020年2月5日|欧洲|联合 Realm |十个|
| 2020年2月6日|欧洲|联合 Realm |十二|

l0oc07j2

l0oc07j21#

covid19 %>%
  group_by(Date, Continent) %>%
  summarize(across(where(is.numeric), sum))

结果

Date       Continent Positives Something_else
  <chr>      <chr>         <int>          <int>
1 2020-02-05 Europe           15              6
2 2020-02-06 Europe           20             15

如果只有一列数据要求和,可以使用count(wt = ...)快捷方式:

covid19 %>% 
  count(Date, Continent, wt = Positives, name = "Positives")

#        Date Continent Positives
#1 2020-02-05    Europe        15
#2 2020-02-06    Europe        20

示例数据与另一列数字数据相加(可能由OP问题“是否有简单的方法可以将日期相同的所有列相加?”暗示)

covid19 <- data.frame(
  stringsAsFactors = FALSE,
              Date = c("2020-02-05","2020-02-05", "2020-02-05",
                       "2020-02-06","2020-02-06","2020-02-06"), 
                      # NOTE UPDATED DATES VS OP
         Continent = c("Europe","Europe","Europe",
                       "Europe","Europe","Europe"),
           Country = c("United Kingdom","Poland",
                       "Sweden","United Kingdom","Poland","Sweden"),
         Positives = c(10L, 5L, 0L, 12L, 7L, 1L),
         Something_else = 1:6
)
q1qsirdb

q1qsirdb2#

以R为基:

aggregate(Positives~Date+Continent,covid19, sum)

        Date Continent Positives
1 2020-02-05    Europe        15
2 2020-02-06    Europe        20

相关问题