根据文件本身的条件拆分文件

Splitting a File Based on Conditions in the File itself

我有以下数据框(组,my_data):

library(dplyr)

id_sample <- 1:25
id <- sample(id_sample, replace = TRUE, 1000)
var_1 = rnorm(1000,100,100)
var_2 = rnorm(1000,100,100)
var_3 = rnorm(1000,100,100)

data = data.frame(id, var_1, var_2, var_3)


my_data =  data.frame(data %>% group_by(id) %>% mutate(index = row_number(id)))
my_data <- my_data[order(my_data$id),]

groups = data.frame(my_data %>% group_by(id) %>% summarise( count = n()))
groups = transform(groups, rand = ceiling(runif(count) * count))

head(groups)
  id count rand
1  1    48   33
2  2    32    7
3  3    36    4
4  4    57   43
5  5    34   23
6  6    51    5

使用“groups”和“my_data”,我想创建两个数据集(例如“data_a”、“data_b”),将“my_data”基于“groups$count”和“groups$rand”。例如:

最后,我将只使用这些“项目符号”中的每一个的 rbind() 命令并创建最终的“data_a”和“data_b”文件。

您可以通过 idgroups 数据与 my_data 连接起来,创建一个组列,其中“A”组用于前 rand 行,组 b 剩余。最后我们split将数据集分成两组。

library(dplyr)

list_data <- my_data %>%
  inner_join(groups, by = 'id') %>%
  group_by(id) %>%
  mutate(group = letters[as.integer(row_number() > rand) + 1]) %>%
  ungroup %>%
  split(.$group)

将它们作为 2 个独立的数据集

#If you want to name the two datasets differently. 
#names(list_data) <- c('data_a', 'data_b')
list2env(list_data, .GlobalEnv)