首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >汇总数据框、列和行

汇总数据框、列和行
EN

Stack Overflow用户
提问于 2020-10-01 09:31:29
回答 3查看 34关注 0票数 0

我有下面的data.frame,我想确定最高值的位置以及索引。例如,让我们考虑下面的data.farme。

代码语言:javascript
运行
AI代码解释
复制
 index t1 t2 t3 t4
   10  1  4  7 10
   20  2  5  8 11
   30  3  6  9  0
   40  0  0  0  0 

first step,中,我想将data.frame.的行加起来

代码语言:javascript
运行
AI代码解释
复制
index    t1 t2 t3 t4
  100    6  12 24 21

second step中,我想选择最高值的位置(t)。在本例中,这将是最高值为24的t3

在第三步中,我想添加列t1-t4并标识具有最高值的索引。在本例中,这将是索引20 (最高值26)。

代码语言:javascript
运行
AI代码解释
复制
index t
10    22
20    26
30    18
40    0

示例数据:

代码语言:javascript
运行
AI代码解释
复制
df<-structure(list(index=c (10,20,30,40), 
                   t1 = c(1, 2, 3, 0), 
                   t2 = c(4, 5, 6, 0), 
                   t3 = c(7, 8,9,  0),
                   t4 = c(10, 11, 0, 0)), row.names = c(NA,4L), class = "data.frame")
                                                            
df
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-01 09:53:41

在base R中,您可以在rowSumscolSums的帮助下完成此操作。

代码语言:javascript
运行
AI代码解释
复制
#Column-wise sum
df1 <- colSums(df)
df1
#index    t1    t2    t3    t4 
#  100     6    15    24    21 

#Column name of highest value
highest_col <- names(df)[-1][which.max(df1[-1])]
highest_col
#[1] "t3"

#row-wise sum
df2 <- rowSums(df[-1])
df2
# 1  2  3  4 
#22 26 18  0 
#Corresponding index of highest row sum
highest_row_index <- df$index[which.max(df2)]
highest_row_index
#[1] 20
票数 1
EN

Stack Overflow用户

发布于 2020-10-01 09:47:44

按列排列:

代码语言:javascript
运行
AI代码解释
复制
df <- setDT(df)
df_c <- df[,t:=t1+t2+t3+t4][, .(index, t)]
df_c[, .(index = index[which.max(t)], t = max(t))]

按行排列:

代码语言:javascript
运行
AI代码解释
复制
df_r <- df[, .(index = sum(index),
               t1 = sum(t1),
               t2 = sum(t2),
               t3 = sum(t3),
               t4 = sum(t4))]
票数 1
EN

Stack Overflow用户

发布于 2020-10-01 10:14:20

使用dplyr

列总和:

代码语言:javascript
运行
AI代码解释
复制
df %>%
 summarise_all(sum)

相加后选择最大值:

代码语言:javascript
运行
AI代码解释
复制
df %>%
 summarise_all(sum) %>%
 select(-index) %>%
 max()

将t1-t4相加,并选择具有最大值的行:

代码语言:javascript
运行
AI代码解释
复制
df %>%
  mutate(t = rowSums(.[2:5])) %>%
  select(index,t) %>%
  filter(t == max(t)) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64152598

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档