r - 大数据集的行操作
问题描述
我试图通过复制行或将它们乘以 3 来操作我的数据框。所以,我的数据框看起来像这样:
我想要做的是复制所有具有 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 等.
任何帮助都会很棒!
谢谢
解决方案
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
推荐阅读
- automata - 通过机器及其描述作为停机问题的输入是什么意思?
- python - 计算 Numpy 数组中特定真/假排序的出现次数
- postgresql - 对于 datadog 如何检查 posgresql 是否启动和运行(在 Linuxredhat 服务器上)
- c# - 域数据模型中的非持久属性
- c# - C# 任务的 Angular 对应物
- autodesk-forge - Autodesk Forge Reality Capture:不重建完整的网格
- apache-storm - 如何为 logwriter 进程提供更少的内存(-xmx),为工作进程提供更高的内存?
- python - 是否可以检查发出的 HTTPConnection 请求的数量
- bash - bash 排序字母数字版本号
- php - 如何在没有星期天的情况下将日期和日期保存到单独的数组中?