将数据框转换为主题列表
Converting a data frame to a motified list
虽然关于这个话题有很多问题;我似乎找不到正确的问题答案。因此,我将这个问题转给你们。
上下文:
我有一个包含很多行 (+150K) 和 32 个对应列的数据集。第二列是文件编号。文档编号不是唯一 ID。因此,日期包含具有相同文档编号的多行的行。我喜欢创建文档编号列表。此文档编号列表包含另一个列表,其中包含具有相同文档编号的相应行。
例如:
这是数据示例(我在下面的示例中包含了 dput
输出)。
Document Number Col.A Col.B
A random_56681 random_24984
A random_78738 random_23098
A random_48640 random_32375
B random_96243 random_96927
B random_72045 random_52583
C random_19367 random_20441
C random_96778 random_22161
C random_48038 random_95644
C random_62999 random_44561
这就是我要找的东西。我需要一个包含 3 个文档(A、B、C)的列表。这些列表中的每一个都需要包含另一个包含相应行的列表。例如,主列表(假设 my_list
)应该有 3 个列表 A、B 和 C;每个列表应分别包含 3、2 和 4 个列表。
希望我问的问题足够清楚(如果不清楚请告诉我)。
您可以在此处找到示例数据:
structure(list(Document_Number = structure(c(1L, 1L, 1L, 2L,
2L, 3L, 3L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor"),
Col.A = structure(c(4L, 7L, 3L, 8L, 6L, 1L, 9L, 2L, 5L), .Label = c("random_19367",
"random_48038", "random_48640", "random_56681", "random_62999",
"random_72045", "random_78738", "random_96243", "random_96778"
), class = "factor"), Col.B = structure(c(4L, 3L, 5L, 9L,
7L, 1L, 2L, 8L, 6L), .Label = c("random_20441", "random_22161",
"random_23098", "random_24984", "random_32375", "random_44561",
"random_52583", "random_95644", "random_96927"), class = "factor")), class = "data.frame", row.names = c(NA,
-9L))
您可以使用 split
如:
split(x, x$Document_Number)
#$A
# Document_Number Col.A Col.B
#1 A random_56681 random_24984
#2 A random_78738 random_23098
#3 A random_48640 random_32375
#
#$B
# Document_Number Col.A Col.B
#4 B random_96243 random_96927
#5 B random_72045 random_52583
#
#$C
# Document_Number Col.A Col.B
#6 C random_19367 random_20441
#7 C random_96778 random_22161
#8 C random_48038 random_95644
#9 C random_62999 random_44561
一个选项是group_split
library(dplyr)
df1 %>%
group_split(Document_Number)
虽然关于这个话题有很多问题;我似乎找不到正确的问题答案。因此,我将这个问题转给你们。
上下文: 我有一个包含很多行 (+150K) 和 32 个对应列的数据集。第二列是文件编号。文档编号不是唯一 ID。因此,日期包含具有相同文档编号的多行的行。我喜欢创建文档编号列表。此文档编号列表包含另一个列表,其中包含具有相同文档编号的相应行。
例如:
这是数据示例(我在下面的示例中包含了 dput
输出)。
Document Number Col.A Col.B
A random_56681 random_24984
A random_78738 random_23098
A random_48640 random_32375
B random_96243 random_96927
B random_72045 random_52583
C random_19367 random_20441
C random_96778 random_22161
C random_48038 random_95644
C random_62999 random_44561
这就是我要找的东西。我需要一个包含 3 个文档(A、B、C)的列表。这些列表中的每一个都需要包含另一个包含相应行的列表。例如,主列表(假设 my_list
)应该有 3 个列表 A、B 和 C;每个列表应分别包含 3、2 和 4 个列表。
希望我问的问题足够清楚(如果不清楚请告诉我)。
您可以在此处找到示例数据:
structure(list(Document_Number = structure(c(1L, 1L, 1L, 2L,
2L, 3L, 3L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor"),
Col.A = structure(c(4L, 7L, 3L, 8L, 6L, 1L, 9L, 2L, 5L), .Label = c("random_19367",
"random_48038", "random_48640", "random_56681", "random_62999",
"random_72045", "random_78738", "random_96243", "random_96778"
), class = "factor"), Col.B = structure(c(4L, 3L, 5L, 9L,
7L, 1L, 2L, 8L, 6L), .Label = c("random_20441", "random_22161",
"random_23098", "random_24984", "random_32375", "random_44561",
"random_52583", "random_95644", "random_96927"), class = "factor")), class = "data.frame", row.names = c(NA,
-9L))
您可以使用 split
如:
split(x, x$Document_Number)
#$A
# Document_Number Col.A Col.B
#1 A random_56681 random_24984
#2 A random_78738 random_23098
#3 A random_48640 random_32375
#
#$B
# Document_Number Col.A Col.B
#4 B random_96243 random_96927
#5 B random_72045 random_52583
#
#$C
# Document_Number Col.A Col.B
#6 C random_19367 random_20441
#7 C random_96778 random_22161
#8 C random_48038 random_95644
#9 C random_62999 random_44561
一个选项是group_split
library(dplyr)
df1 %>%
group_split(Document_Number)