首先,我是新手。一直在寻找答案,却找不到。
所以我有一个50k +行的数据框。我想做的是创建两个新的数据帧:一个在原始数据帧中具有行0:28120,另一个在其余数据中。
有人知道该怎么做吗?
我尝试执行以下操作:
df.tory <-df [c(0:28120),]
df.labour <-df [c(28121:53814),]
它创建了新的数据框,但是当我汇总新数据框的数据时,所有行都被包括在内(本不该显示的行的值显示为0)
答案 0 :(得分:0)
首先,请注意R中的索引以1开头,而不是0。请尝试以下操作:
inds1 <- 1:28120
然后找到其余的:
inds2 <- setdiff(inds1, 1:nrow(df))
然后可以将两个数据框定义为:
df1 <- df[inds1, ]
df2 <- df[inds2, ]
答案 1 :(得分:0)
您应该在设置子集时直接使用范围,例如
cutoff <- 28120
df.tory <- df[1:cutoff, ]
df.labour <- df[(cutoff+1):nrow(df), ]
答案 2 :(得分:0)
您可以使用slice
中的tidyverse
来按索引选择所需的行。
df1 <- df %>%
slice(1:28120)
df2 <- df %>%
slice(28121:53814)
或者对于后者,您可以使用
df2 <- df %>%
slice(28121:n())
指定所有剩余的行。