我的数据框看起来像这样:
ID | value 1 | value 2 | value 3 | value 4
1 | M | D | F | A
2 | F | M | G | B
3 | M | D | F | A
4 | L | D | E | B
Run Code Online (Sandbox Code Playgroud)
我想得到这样的东西.
value 1 | value 2 | value 3 | value 4| Number of combinations
M | D | F | A | 2
F | M | G | …
Run Code Online (Sandbox Code Playgroud) 我正在尝试重塑数据帧:
目前它看起来像这样:
ID | Gender |A1 | A2 | A3 | B1 | B2 | B3
ID_1 | m | 3 | 3 | 3 | 2 | 3 | 2
ID_2 | f | 1 | 1 | 1 | 4 | 4 | 4
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西:
ID | Gender | A1 | A2 | A3
ID_1 | m | 3 | 3 | 3 <- this would be columns A1 - A3 for ID 1
ID_1 | m | …
Run Code Online (Sandbox Code Playgroud) 我正在尝试重构一个巨大的数据帧(大约12.000个案例):在旧的数据帧中,一个人是一行,有大约250列(例如人1,测试A1,testA2,testB,......),我想要所有的结果测试A(1 - 10 A的总体和24个项目(AY)在一列中的那个人,所以一个人最终有24列和10行.在AY项目开始之前还有一个固定的数据框部分(个人)像年龄,性别等信息,我希望保持原样(fixdata).函数/循环适用于30个案例(我提前尝试过)但是对于12.000它仍然在计算,现在将近24小时.有什么想法吗?
restructure <- function(data, firstcol, numcol, numsets){
out <- data.frame(t(rep(0, (firstcol-1)+ numcol)) )
names(out) <- names(daten[0:(firstcol+numcol-1)])
for(i in 1:nrow(daten)){
fixdata <- (daten[i, 1:(firstcol-1)])
for (j in (seq(firstcol, ((firstcol-1)+ numcol* numsets), by = numcol))){
flexdata <- daten[i, j:(j+numcol-1)]
tmp <- cbind(fixdata, flexdata)
names(tmp) <- names(daten[0:(firstcol+numcol-1)])
out <- rbind(out,tmp)
}
}
out <- out[2:nrow(out),]
return(out)
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我的data.frame看起来像这样
ID | test | test_result
1 | B | 10
2 | A | 9
3 | A | 11
4 | C | 7
5 | F | 5
Run Code Online (Sandbox Code Playgroud)
我希望得到这样的东西:
test | test_reult_ID1 | test_result_ID2 | test_result_ID3 ...
A | NA | 9 | 11
B | 10 | NA | NA
Run Code Online (Sandbox Code Playgroud)
它使用reshape()到宽格式,只有少数情况,但整个数据框(大约23.000 ID)reshape()需要太长时间.Melt()和cast()会对数据进行重新整形,但会将test_result中的值替换为测试频率.任何其他想法如何管理?谢谢!
r ×4
dataframe ×2
reshape ×2
chunks ×1
combinations ×1
for-loop ×1
function ×1
large-data ×1
melt ×1
unique ×1