首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择行数据复制

选择行数据复制
EN

Stack Overflow用户
提问于 2021-03-29 15:45:45
回答 1查看 30关注 0票数 0

我希望按3复制一列中的特定行。

我的数据框名为IID,只包含一列和大约700个变量,但有一小段代码如下所示:

代码语言:javascript
复制
10341
10561
10641
10912
11011
11012
111
1131
1132

因此,对于每个单例(10341 10561 10641 10912 111),我需要用3来复制行。对于每个双胞胎(11011 11012和1131132),我只需要用3来复制第二个双胞胎(以字母2结尾),第一个双胞胎保持不变。

最终,我希望这些数据看起来像这样:

代码语言:javascript
复制
10341
10341
10341
10561
10561
10561
10641
10641
10641
10912
10912
10912
11011
11012
11012
11012
111
111
111
1131
1132
1132
1132

任何帮助都将不胜感激!

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-03-29 16:15:41

您可以创建一个group列,它为每个单值和双值提供一个唯一的数字。如果一个组是单个值,重复3次,如果是双胞胎,则重复第一个值(较小)1次,第二个值3次。

代码语言:javascript
复制
library(dplyr)
library(tidyr)

IID %>%
  mutate(row = row_number()) %>%
  arrange(Family_No) %>%
  mutate(group = cumsum(Family_No - lag(Family_No, default = first(Family_No)) != 1)) %>%
  group_by(group) %>%
  mutate(n = if(n() == 1) 3 else c(1, 3)) %>%
  ungroup %>%
  uncount(n) %>%
  arrange(row) %>%
  select(-group, -row)

这将返回:

代码语言:javascript
复制
#   Family_No
#1      10341
#2      10341
#3      10341
#4      10561
#5      10561
#6      10561
#7      10641
#8      10641
#9      10641
#10     10912
#11     10912
#12     10912
#13     11011
#14     11012
#15     11012
#16     11012
#17       111
#18       111
#19       111
#20      1131
#21      1132
#22      1132
#23      1132

data

代码语言:javascript
复制
IID <- data.frame(Family_No = c(10341, 10561, 10641, 10912, 11011, 11012, 111, 1131, 1132))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66850410

复制
相关文章

相似问题

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