[英]How to add rows to empty data frames in R based only if empty data frame generated?
[英]Sequentially assign rows of one data frame to empty data frames of varying rows, until all positions within empty data frame are filled
我是R的完全新手,但我无法弄清楚。 我已经花了几个小时试图做到这一点,但是没有运气。 我正在尝试执行以下操作。
我想将df_main的行顺序分配给df_1,df_2和df_3,直到每个数据帧中的行数正确为止。 含义:
因此,df_1(9行)应具有以下行或df_main [1、4、7、10、12、14、16、18、20],df_2(13行)应具有以下df_main [2、5 、、 8、11、13、15、17、19、21、22、23、24、25]和df_3(3行)应具有以下df_main [3、6、9]行。
我不知道从哪里开始,所以我没有要显示的代码。 任何帮助将不胜感激!
谢谢!
此位取模运算将为您提供行的可能类别ID:
> 1+ 0:24 %% 3
[1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1
尽管您没有提供有效的示例,但此代码可能会有效地提供有用的结果:
df <- cbind(df, catvar= 1+ 0:24 %% 3)
df_list <- split( df , df$catvar)
我会尝试这样的事情,可以进一步简化,但这样可以更加透明:
I <- rbind(
cbind(rep("df_1",nrow(df_1)),
1:nrow(df_1)),
cbind(rep("df_2",nrow(df_2)),
1:nrow(df_2)),
cbind(rep("df_3",nrow(df_3)),
1:nrow(df_3)))
I <- I [order(I[,2],I[,1]),]
df_main <- cbind(df_main, I[1:nrow(df_main),])
,现在您可以轻松地将行提取到单独的dfs中:
df_1 <- df_main [df_main$v1 == "df_1",]
我没有机会测试此代码,但希望它能帮助您更接近解决方案。
,大卫。
编辑:
嗨,内森,我想这取决于n_1个空数据帧如何呈现自己。 最后,您需要从空白数据框中获取的唯一信息是行数(除非不允许每一行都保存新数据)。 如果每个行都有该数量的行,则实际上更容易创建空数据框:
首先,模拟一些数据:
n <- 2000
n_1 <- 20
df_main <- data.frame ( SomeCol = paste ( "Some Value", 1:n ))
创建空的dfs的伪行计数:
(rowcounts_of_n_1_dfs <- round ( rnorm ( n_1, 75, 25 )))
不运行开始
万一您实际上必须从对象df_1,df_2,..,df_开始,则可以执行以下操作:
rowcounts_of_n_1_dfs <- unlist ( lapply ( 1:n_1, function ( x ){
return ( nrow ( get ( paste ( "df", x, sep = "_" ))))
}))
没有结束
现在,只需如下创建通讯组列表:
dist <- data.frame ( df = rep ( 1:n_1, rowcounts_of_n_1_dfs ),
i = unlist ( lapply ( rowcounts_of_n_1_dfs, seq )))
神奇之处在于:
dist <- dist [ with ( dist, order( i, df )),]
只需分发,直到df_main用完即可:
df_list <- split ( df_main, dist$df [ 1:nrow ( df_main )] )
最后,将数据框放置在全局环境中:
dummy <- lapply ( 1:n_1, function ( x ) {
assign ( paste ( "df", x, sep = "_" ), df_list [[ x ]], envir = globalenv ())
})
检查是否已创建数据框:
ls()
我得到这个:
[1] "df_1" "df_10" "df_11" "df_12" "df_13" "df_14"
[7] "df_15" "df_16" "df_17" "df_18" "df_19" "df_2"
[13] "df_20" "df_3" "df_4" "df_5" "df_6" "df_7"
[19] "df_8" "df_9" "df_list" "df_main" "dist" "dummy"
[25] "n" "n_1" "rowcounts_of_n_1_dfs"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.