【发布时间】:2015-10-28 04:23:12
【问题描述】:
我有一个如下形式的数据框,它有两个字段。 field1 是一个分类字段,只有两个值 TRUE 或 FALSE,field2 是一个列表。我想解析 field2 并在我的数据框中为字符列表中的每个唯一值创建新列。例如,我想从下面的数据中创建 3 个新列,这些列将是 Bas、ant 和 onal。我希望新列包含一个标志 TRUE 或 FALSE,指示该行的 field2 值包含该字段命名的值。例如,新列 Bas 的第 1 行值为 TRUE,列 onal 的第 1 行值为 FALSE。在 Python 中,有一个名为 getdummies 的函数可以做类似的事情。我不确定 r 中是否有等价物,我也不完全确定如何解析列表。非常感谢任何提示。
样本数据:
structure(list(field1 = c("False", "TRUE"), field2 = list(
c("Bas", "ants"), c("Bas", "onal"))), .Names = c("field1",
"field2"), row.names = c(1904L, 1968L), class = "data.frame")
这是我希望输出的示例:
structure(list(field1 = c(FALSE, TRUE), field2 = list(
c("Bas", "ants"), c("Bas", "onal")), class = "factor"), Bas = c(TRUE, TRUE
), ants = c(TRUE, FALSE), onal = c(FALSE, TRUE)), .Names = c("field1",
"field2", "Bas", "ants", "onal"), class = "data.frame", row.names = c(NA,
-2L))
【问题讨论】:
-
你还能显示预期的输出吗?
-
我添加了示例输出。我还编辑了我最初发布的示例数据。我想我的括号太多了。
-
输出给了我错误。你能检查是否有一些额外的括号。示例数据现在也是一个列表。前一个是正确的,因为它是一个以列表为列的 data.frame。
-
我猜
library(qdapTools);!!(mtabulate(df1$field2))将是预期的输出。 -
我在示例输入数据中添加了右括号。所以现在它是原始形式,感谢您的帮助。很抱歉造成混乱。
标签: r