使用索引根据列中的唯一值对数据框进行子集化
Use index to subset dataframe based on unique values in a column
我有一个包含大量样本 ID 的大型数据集。一个非常简化的版本看起来像这样:
df <- data.frame(ID = rep(c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"), times = c(10, 4, 12, 19, 5, 22, 6, 7, 11, 4)),
Value = sample(x = 20:30, size = 100, replace = T))
我想根据 ID 将我的大型数据集拆分为多个较小的数据框,这样当我绘制数据时,我的图表不会变得太拥挤。在这个简化的示例中,我想将其拆分为两个 dataframes/plots,一个包含前 5 个唯一 ID (A-E) 的数据,另一个包含后 5 个唯一 ID (F-J) 的数据。我如何使用索引符号轻松地做到这一点(假设我有数百个 ID)?我下面的代码不起作用,我不知道它有什么问题:
subset.1 <- df[unique(df$ID)[1:5]]
subset.2 <- df[unique(df$ID)[6:10]]
您应该使用逻辑向量进行子集化:
df[df$ID %in% unique(df$ID)[1:5], ]
df[df$ID %in% unique(df$ID)[6:10], ]
您还可以使用 split
和 cut
将您的数据框按组拆分为 n
个数据集(此处为 2)。
split(df, cut(as.numeric(as.factor(df$ID)), 2))
我有一个包含大量样本 ID 的大型数据集。一个非常简化的版本看起来像这样:
df <- data.frame(ID = rep(c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"), times = c(10, 4, 12, 19, 5, 22, 6, 7, 11, 4)),
Value = sample(x = 20:30, size = 100, replace = T))
我想根据 ID 将我的大型数据集拆分为多个较小的数据框,这样当我绘制数据时,我的图表不会变得太拥挤。在这个简化的示例中,我想将其拆分为两个 dataframes/plots,一个包含前 5 个唯一 ID (A-E) 的数据,另一个包含后 5 个唯一 ID (F-J) 的数据。我如何使用索引符号轻松地做到这一点(假设我有数百个 ID)?我下面的代码不起作用,我不知道它有什么问题:
subset.1 <- df[unique(df$ID)[1:5]]
subset.2 <- df[unique(df$ID)[6:10]]
您应该使用逻辑向量进行子集化:
df[df$ID %in% unique(df$ID)[1:5], ]
df[df$ID %in% unique(df$ID)[6:10], ]
您还可以使用 split
和 cut
将您的数据框按组拆分为 n
个数据集(此处为 2)。
split(df, cut(as.numeric(as.factor(df$ID)), 2))