首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中:如何在相同的数据帧中减去/分割行

在R中:如何在相同的数据帧中减去/分割行
EN

Stack Overflow用户
提问于 2016-06-06 00:00:41
回答 3查看 103关注 0票数 2

我有一个数据框架,比方说它叫做my.data

代码语言:javascript
复制
1  Item   A   B   C
2  AAE    7   1   37
3  CCC    7   0   38
4  PPI    10  1   35

我想在"AAE"下面创建一个名为"AAA" ( "AAE" - "CCC" - "PPI" )的行,例如,对于列A,我们有7-7-10 = -10,对于列B,我们有1-0-1 = 0等等。为了澄清,我的数据集要大得多,并且"CCC“和"PPI”不是直接在"AAE“下面。

我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-06 00:36:46

另一种选择是首先转置data.frame,然后进行正常的突变,然后将其转回。

代码语言:javascript
复制
library(dplyr)
`row.names<-`(df[,-1], df[,1]) %>% t %>%
              transform(AAA = AAE - CCC - PPI) %>% 
              t %>% data.frame

      A B   C
AAE   7 1  37
CCC   7 0  38
PPI  10 1  35
AAA -10 0 -36
票数 3
EN

Stack Overflow用户

发布于 2016-06-06 00:17:56

我可以使用Reduce来递归地应用-

代码语言:javascript
复制
newrow <- c(Item="AAA", lapply(dat[dat$Item %in% c("AAE","CCC","PPI"),-1], Reduce, f=`-`))
rbind(dat[1,], newrow, dat[-1,])


#   Item   A B   C
#2   AAE   7 1  37
#21  AAA -10 0 -36
#3   CCC   7 0  38
#4   PPI  10 1  35
票数 3
EN

Stack Overflow用户

发布于 2016-06-06 06:30:00

代码语言:javascript
复制
apply(my.data[,c("A","B","C")],2,function(x)Reduce("-",x))
  A   B   C 
-10   0 -36 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37647964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档