data.frame 在 R 中列出
data.frame to list in R
我有这样的数据:
ID = c(rep("ID1",3), rep("ID2",2), "ID3", rep("ID4",2))
item = c("a","b","c","a","c","a","b","a")
df = data.frame(ID,item)
ID1 a
ID1 b
ID1 c
ID2 a
ID2 c
ID3 a
ID4 b
ID4 a
我需要将它作为这样的列表转换为 "transactions":
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "a" "c"
[[3]]
[1] "a"
[[4]]
[1] "b" "a"
我试过:
lapply(split(item, ID), function(x) as.list(x))
但是这些项目仍然分开 "rows" 而不是一个接一个。
关于如何完成上述格式的任何想法?
使用unstack
:
df <- data.frame(ID,item)
unstack(df, item~ID)
# $ID1
# [1] "a" "b" "c"
#
# $ID2
# [1] "a" "c"
#
# $ID3
# [1] "a"
#
# $ID4
# [1] "b" "a"
根据预期输出,您不需要使用 as.list
setNames(split(as.character(df1$item),df1$ID) , NULL)
#[[1]]
#[1] "a" "b" "c"
#[[2]]
#[1] "a" "c"
#[[3]]
#[1] "a"
#[[4]]
#[1] "b" "a"
使用您的方法并使其发挥作用:
> lapply(split(df, df$ID), function(u) u$item)
#$ID1
#[1] "a" "b" "c"
#$ID2
#[1] "a" "c"
#$ID3
#[1] "a"
#$ID4
#[1] "b" "a"
我有这样的数据:
ID = c(rep("ID1",3), rep("ID2",2), "ID3", rep("ID4",2))
item = c("a","b","c","a","c","a","b","a")
df = data.frame(ID,item)
ID1 a
ID1 b
ID1 c
ID2 a
ID2 c
ID3 a
ID4 b
ID4 a
我需要将它作为这样的列表转换为 "transactions":
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "a" "c"
[[3]]
[1] "a"
[[4]]
[1] "b" "a"
我试过:
lapply(split(item, ID), function(x) as.list(x))
但是这些项目仍然分开 "rows" 而不是一个接一个。
关于如何完成上述格式的任何想法?
使用unstack
:
df <- data.frame(ID,item)
unstack(df, item~ID)
# $ID1
# [1] "a" "b" "c"
#
# $ID2
# [1] "a" "c"
#
# $ID3
# [1] "a"
#
# $ID4
# [1] "b" "a"
根据预期输出,您不需要使用 as.list
setNames(split(as.character(df1$item),df1$ID) , NULL)
#[[1]]
#[1] "a" "b" "c"
#[[2]]
#[1] "a" "c"
#[[3]]
#[1] "a"
#[[4]]
#[1] "b" "a"
使用您的方法并使其发挥作用:
> lapply(split(df, df$ID), function(u) u$item)
#$ID1
#[1] "a" "b" "c"
#$ID2
#[1] "a" "c"
#$ID3
#[1] "a"
#$ID4
#[1] "b" "a"