gpt4 book ai didi

r - 将逗号分隔的列转换为具有 bool 值的列

转载 作者:行者123 更新时间:2023-12-04 09:41:01 25 4
gpt4 key购买 nike

我的 data.frame 中名为 services 的一列中有以下逗号分隔的数据。

> dput(structure(df$services[1:5]))
list("Global Expense Management, Company Privacy Policy", "Removal Services, Global Expense Management",
"Removal Services, Exception & Cost Admin, Global Cost Estimate, Company Privacy Policy",
"Removal Services, Exception & Cost Admin, Ancillary Services, Global Cost Estimate, Global Expense Management, Perm Storage, Company Privacy Policy",
"Global Expense Management, Company Privacy Policy")

我想将此数据转换为我的数据框中的单独列,如果该行包含该服务,则在该服务的列下设置 TRUE。否则,将值设置为 FALSE。

例如,如果我希望我的数据框看起来像这样:

GlobalExpenseManagement    |    CompanyPrivacyPolicy   |   etc...
TRUE TRUE
TRUE FALSE
FALSE TRUE

我假设我必须拆分逗号分隔值,将它们分组以删除重复项,然后将它们作为 names(df) 添加到我的数据框中。但是,如果该行包含该服务,我不知道如何遍历数据集并设置 true/false。

有没有人有什么好的想法必须这样做?

编辑:合并数据

我现在正尝试将新矩阵与我现有的数据框结合起来,以用新的对应列替换服务。我已经根据@plafort 在下面的出色回答进行了尝试:

names(df) <- headnames
rbind(mat, df)

但是,我得到这个错误:

Error in names(df) <- headnames : 'names' attribute [178] must be the same length as the vector [7]

我也试过这个:

final <- data.frame(cbind(mat, df))

但是,它似乎缺少 df 中的列。如何合并从 matdf 的列?

最佳答案

尝试:

splitup <- sapply(unlist(lst), strsplit, ', ')
headnames <- unique(unlist(splitup))
(mat <- t(unname(sapply(splitup, function(x) headnames %in% x))))

[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE
[2,] TRUE FALSE TRUE FALSE FALSE FALSE FALSE
[3,] FALSE TRUE TRUE TRUE TRUE FALSE FALSE
[4,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[5,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE

我们首先用逗号分割数据,然后使用 unlist 直接访问元素。 headnames 就像您提到的那样,寻找独特的类别标题。最后一行首先将标题类别与每个列表项匹配,然后使用 unname 删除自动命名并将数据转换回我们希望使用 t 的方式。

为了在顶部添加名称,我们分配了之前使用函数 colnames 定义为列标题的唯一名称。顺序正确,因为这是用于进行行观察的相同 headnames 向量。

colnames(mat) <- headnames

Global Expense Management Company Privacy Policy
[1,] TRUE TRUE
[2,] TRUE FALSE
[3,] FALSE TRUE
[4,] TRUE TRUE
[5,] TRUE TRUE...

关于r - 将逗号分隔的列转换为具有 bool 值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30714726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com