为一行的所有唯一值子集数据框
Subsetting a data frame for all the unique values of a row
假设我有一个数据框:
id value
1 "hi"
1 "hi"
1 "hi again"
1 "hi again"
2 "hello"
2 "hi"
现在我想为 id 列中的每个不同值获取一个单独的数据框。
df1
id value
1 "hi"
1 "hi"
1 "hi again"
1 "hi again"
and df2
id value
2 "hello"
2 "hi"
如何在 R 中有效地实现这一点?
我试过 for 循环
df <- data.frame(id=c('1','1','1','1','2','2'),value=c('hi','hi','hi again','hi again','hello','hi'))
for (i in 1:length(unique(df$id))) {
df1 <- df[unique(df$id)[i],]
print(df1)
}
但是结果是
id value
1 1 hi
id value
2 1 hi
我知道 apply 系列对数据框中的每一行执行相同的操作,但我无法在这种情况下使用它们。可能是我遗漏了一些明显的东西?
根据上述评论,单独添加分配数据帧的命令。
df_list <- split(df, df$id)
names(df_list) <- c("df1", "df2")
list2env(df_list, envir = .GlobalEnv)
假设我有一个数据框:
id value
1 "hi"
1 "hi"
1 "hi again"
1 "hi again"
2 "hello"
2 "hi"
现在我想为 id 列中的每个不同值获取一个单独的数据框。
df1
id value
1 "hi"
1 "hi"
1 "hi again"
1 "hi again"
and df2
id value
2 "hello"
2 "hi"
如何在 R 中有效地实现这一点?
我试过 for 循环
df <- data.frame(id=c('1','1','1','1','2','2'),value=c('hi','hi','hi again','hi again','hello','hi'))
for (i in 1:length(unique(df$id))) {
df1 <- df[unique(df$id)[i],]
print(df1)
}
但是结果是
id value
1 1 hi
id value
2 1 hi
我知道 apply 系列对数据框中的每一行执行相同的操作,但我无法在这种情况下使用它们。可能是我遗漏了一些明显的东西?
根据上述评论,单独添加分配数据帧的命令。
df_list <- split(df, df$id)
names(df_list) <- c("df1", "df2")
list2env(df_list, envir = .GlobalEnv)