我在要转换为布尔列的每一行中都有一个随机排序列表,使用内容作为 R 中的列名
I have a randomly order list in each row that I want to convert to a boolean column, using the contents as the column name in R
我的数据框的每一行都有一个随机排序的列表,我想将其转换为布尔列,使用列表元素的内容作为 R 中的列名。
列表中的示例数据:
[[9675]]
[1] "Jazz" "Music"
[[9676]]
[1] "Modern" "Opera" "Music"
[[9677]]
[1] "Rock" "Music"
[[9678]]
[1] "HMetal" "Rock" "Music"
我希望结果是这样的:
Genre.Music Genre.Modern Genre.Jazz Genre.Classical Genre.Opera Genre.Rock Genre.HMetal
[[9675]] 1 0 1 0 0 0 0
[[9676]] 1 1 0 0 1 0 0
[[9677]] 1 0 0 0 0 1 0 1
[[9678]] 1 0 0 0 0 1 1
我希望能够在读取每条记录时即时创建每一列,因为我总共有大约 200 种类型。
在 R 中有什么方法可以将列表项的内容用作列的键?如果这有助于列创建过程,我当然可以提前对列表进行排序。
我将在统计分析中使用最终结果。
你可以这样做
lst <- list(
A = letters[1:2],
B = letters[2:4]
)
lst
# $A
# [1] "a" "b"
#
# $B
# [1] "b" "c" "d"
library(reshape2)
(df <- recast(lst, L1~value))
# L1 a b c d
# 1 A a b <NA> <NA>
# 2 B <NA> b c d
cbind(df[1], (!is.na(df[-1])) +0L)
# L1 a b c d
# 1 A 1 1 0 0
# 2 B 0 1 1 1
我的数据框的每一行都有一个随机排序的列表,我想将其转换为布尔列,使用列表元素的内容作为 R 中的列名。
列表中的示例数据:
[[9675]]
[1] "Jazz" "Music"
[[9676]]
[1] "Modern" "Opera" "Music"
[[9677]]
[1] "Rock" "Music"
[[9678]]
[1] "HMetal" "Rock" "Music"
我希望结果是这样的:
Genre.Music Genre.Modern Genre.Jazz Genre.Classical Genre.Opera Genre.Rock Genre.HMetal
[[9675]] 1 0 1 0 0 0 0
[[9676]] 1 1 0 0 1 0 0
[[9677]] 1 0 0 0 0 1 0 1
[[9678]] 1 0 0 0 0 1 1
我希望能够在读取每条记录时即时创建每一列,因为我总共有大约 200 种类型。
在 R 中有什么方法可以将列表项的内容用作列的键?如果这有助于列创建过程,我当然可以提前对列表进行排序。
我将在统计分析中使用最终结果。
你可以这样做
lst <- list(
A = letters[1:2],
B = letters[2:4]
)
lst
# $A
# [1] "a" "b"
#
# $B
# [1] "b" "c" "d"
library(reshape2)
(df <- recast(lst, L1~value))
# L1 a b c d
# 1 A a b <NA> <NA>
# 2 B <NA> b c d
cbind(df[1], (!is.na(df[-1])) +0L)
# L1 a b c d
# 1 A 1 1 0 0
# 2 B 0 1 1 1