Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于R中的数据集创建确定数量的行

基于R中的数据集创建确定数量的行
EN

Stack Overflow用户
提问于 2020-07-24 15:21:04
回答 1查看 64关注 0票数 0

我有以下数据集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataloc <- data.frame(id = c("FAS","FAS","FAS","FES","FES"),
                      gen = c(9,0,0,8,0),
                      lipd = c(0,2,3,0,5),
                      stringsAsFactors = FALSE)

所以我有两个组:FASFES。对于每一组,我想创建3行重复gen的非零值,每一行lipd的非零值,最后一行从gen中减去lipd sum。每行都有一个已定义的名称。这是预期的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Name    Value
First   9
Second  9
Third   9
Added   2
Added   3
Result  4
First   8
Second  8
Third   8
Added   5
Result  3    

我可以使用以下代码创建结果行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataloc %>% group_by(id) %>% 
  summarise(value = sum(gen) - sum(lipd)) %>% 
  mutate(name = "Result") %>% 
  select("name","value")

但我还是坚持基于非零值创建n行,并给它们命名。在R基础或tidyverse方面的任何帮助都将非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 15:41:29

这是一个基本的R解决方案。也许有更简单的解决方案,但这一个有效。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sp <- split(dataloc, dataloc$id)


res <- lapply(sp, function(DF){
  i <- which(DF[['gen']] != 0)
  j <- which(DF[['lipd']] != 0)
  tmp <- rbind(DF[rep(i, 3), ], DF[j, ])
  Value <- rowSums(tmp[-1])
  Value <- c(Value, Value[1] - sum(DF[j, 'lipd']))
  Name <- c("First", "Second", "Third", rep("Added", length(j)), "Result")
  id <- rep(DF[['id']][1], length(Name))
  data.frame(id, Name, Value)
})

res <- do.call(rbind, res)
row.names(res) <- NULL
res
#    id   Name Value
#1  FAS  First     9
#2  FAS Second     9
#3  FAS  Third     9
#4  FAS  Added     2
#5  FAS  Added     3
#6  FAS Result     4
#7  FES  First     8
#8  FES Second     8
#9  FES  Third     8
#10 FES  Added     5
#11 FES Result     3

最后的清理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm(sp)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63076581

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文