如何为DataFrame添加交替1/0列以完成50/50样本拆分的稳健性检验?
解决方案:生成交替1/0列并拆分DataFrame
基础R实现
直接用rep()函数按数据总行数循环生成1和0,代码如下:
# 添加交替1/0的列 mydata$rec <- rep(c(1, 0), length.out = nrow(mydata)) # 拆分为两个DataFrame df_with_0 <- mydata[mydata$rec == 0, ] df_with_1 <- mydata[mydata$rec == 1, ]
tidyverse/dplyr实现
如果习惯用dplyr操作,通过行号取模的方式更直观:
library(dplyr) # 添加交替列 mydata <- mydata %>% mutate(rec = row_number() %% 2) # 拆分数据 df_with_0 <- filter(mydata, rec == 0) df_with_1 <- filter(mydata, rec == 1)
补充说明:你的数据总行数是811777(奇数),因此其中一组样本会比另一组多1行,大样本下这个微小差异完全可以忽略,不会影响稳健性检验的结果。
内容的提问来源于stack exchange,提问作者Jessica Mck
相关产品推荐
相关产品推荐

