首页 > 解决方案 > 大数据集的行操作

问题描述

我试图通过复制行或将它们乘以 3 来操作我的数据框。所以,我的数据框看起来像这样:

这只是一个小片段 - 我的完整数据有 1004 个变量

我想要做的是复制所有具有 2 个相同值的行(例如 1101),并且对于只有一个值的每一行(例如 1034 或 1056)我想将该行乘以 3。所以,最终我每个单例值都有 3 个,每个双精度值有 4 个。

我知道如何使用 df <- df[rep(seq_len(nrow(df)), each = 2), ] 复制值。但是,我不确定如何指定仅复制某些行并将单例行乘以三。

我基本上我的数据框最终是一个包含如下值的数据表:1034、1034、1034、1056、1056、1056、1064、1064、1064、1091、1091、1091、1101、1101、1101、1101 等.

任何帮助都会很棒!

谢谢

标签: r

解决方案


count您可以使用和执行此复制过程uncount

library(dplyr)
library(tidyr)

df <- data.frame(Family_No = c(1034, 1056, 1064, 1101, 1101))


df %>%
  count(Family_No) %>%
  mutate(n = ifelse(n == 1, 3, 4)) %>%
  uncount(n) -> result

rownames(result) <- NULL
result

#   Family_No
#1       1034
#2       1034
#3       1034
#4       1056
#5       1056
#6       1056
#7       1064
#8       1064
#9       1064
#10      1101
#11      1101
#12      1101
#13      1101

推荐阅读