R数据框中每一行的类总计[重复]

Posted

技术标签:

【中文标题】R数据框中每一行的类总计[重复]【英文标题】:Class totals on each row in an R dataframe [duplicate] 【发布时间】:2022-01-22 10:10:59 【问题描述】:

我在 R 中有如下数据框:

df <- matrix(c('A','A','A','A','B','B','B','B','C','C','C','C',4,6,8,2,2,7,2,8,9,1,2,5),ncol=2)

对于这个数据框的每一行,我想包括每个类(A、B、C)的总值,以便数据框看起来像这样:

df <- matrix(c('A','A','A','A','B','B','B','B','C','C','C','C',4,6,8,2,2,7,2,8,9,1,2,5,20,20,20,20,19,19,19,19,17,17,17,17),ncol=3)

我有什么办法可以做到这一点?

提前感谢您的帮助。

【问题讨论】:

您有矩阵,而不是数据框(因为您明确使用了matrix() 函数)。您可能确实需要数据框,因为矩阵只能保存一种数据类型,但数据框可以在每一列中保存不同的数据类型。 将数据放入数据框中后,您应该能够使用链接的常见问题解答中的任何答案来添加新列。使用dplyr 并从您的矩阵开始,您可以执行library(dplyr); df %&gt;% as.data.frame %&gt;% group_by(V1) %&gt;% mutate(V2 = as.numeric(V2), total = sum(V2)) 【参考方案1】:

使用 R 基础

df <- data.frame(df)
df$Total <-  ave(as.numeric(df$X2), df$X1, FUN=sum)

【讨论】:

【参考方案2】:

dplyr 的解决方案是这样的:

data.frame(df) %>%
  group_by(X1) %>%
  mutate(Sum = sum(as.numeric(X2)))
# A tibble: 12 × 3
# Groups:   X1 [3]
   X1    X2      Sum
   <chr> <chr> <dbl>
 1 A     4        20
 2 A     6        20
 3 A     8        20
 4 A     2        20
 5 B     2        19
 6 B     7        19
 7 B     2        19
 8 B     8        19
 9 C     9        17
10 C     1        17
11 C     2        17
12 C     5        17

【讨论】:

以上是关于R数据框中每一行的类总计[重复]的主要内容,如果未能解决你的问题,请参考以下文章

计算数据框中每一行的概率

Ranger 预测数据框中每一行的类别概率

pyspark 数据框中所有列的总计数为零

如何在python中每隔几秒在tkinter窗口中更改一行文本[重复]

R中的汇总列总计[重复]

加快pandas DataFrame中每一行的发布请求[重复]