我的迭代函数的输出打印很好,但是如何将它保存为数据框/矩阵对象?
for(i in id){
print(data.frame("ID" = i, "nobs" = length(data4[data4 == i])))
}
ID nobs
1 1 117
ID nobs
1 2 1041
ID nobs
1 3 243
ID nobs
1 4 474
ID nobs
1 5 402
ID nobs
1 6 228
ID nobs
1 7 442
ID nobs
1 8 192
我之前尝试过创建矩阵,但如果我尝试将其分配给矩阵,我会得到一个NULL值。
mat.obs <- matrix(NA, nrow = 332, ncol = 2)
for(i in id){
print(data.frame("ID" = i, "nobs" = length(data4[data4 == i])))
mat.obs <- data.frame("ID" = i, "nobs" = length(data4[data4 == i]))
}
}
答案 0 :(得分:0)
试试这个:
library(plyr)
ldply(id, function(i) data.frame("ID" = i, "nobs" = length(data4[data4 == i])))
答案 1 :(得分:0)
你可以这样使用data.table
:
library(data.table)
# create a data.table with data4 as a column named 'id'
DT = data.table(id = data4)
# count observations with each ID
DT[ , .N, by = id]