*图解图片已通过链接附加*
我有一个数据框架,它的观察结果分组如下:
column 1 : groups (A,B,C,D....)
column 2 : classification (0,1,2)
column 3 : # of observation per group per classification.我需要将数据转换为详细的数据,其中观察结果不会按组显示。示例
group, class, count
A , 0 , 1
A , 1 , 2
B , 0 , 2我需要将上面的表格更改为:
group, class
A , 0
A , 1
A , 1
B , 0
B , 0enter image description here有什么想法吗?
最终,它应该是4,000,000个观察值,所以代码应该是有效的尝试在循环中运行一个循环(14小时运行创建了300,000行)
尝试使用aggregate (在R中),但不起作用。
谢谢!
发布于 2019-10-10 20:27:30
下面是R中的data.table方法:
library(data.table)
setDT(dt)
dt = dt[, .(class = rep(class, count)), by = .(group)]
print(dt)
# group class
# 1: A 0
# 2: A 1
# 3: A 1
# 4: B 0
# 5: B 0输入为:
dt = fread("group, class, count
A , 0 , 1
A , 1 , 2
B , 0 , 2")发布于 2019-10-10 20:45:00
如果你更喜欢tidyverse,这里有一个解决方案,它可以做@docendo做过的事情,但速度更慢,不那么优雅:
require(tidyr)
require(dplyr)
data %>% group_by(group,class) %>%
mutate(helper=paste(rep(class,count),collapse=" ")) %>%
separate_rows(helper) %>%
select(group,class)
# A tibble: 5 x 2
# Groups: group, class [3]
group class
* <chr> <int>
1 A 0
2 A 1
3 A 1
4 B 0
5 B 0https://stackoverflow.com/questions/58322458
复制相似问题