我对这个问题的解读是:
-
data.frame(例如名为“companies”)中有一个列,其中包含逗号分隔的公司字符串。
- 您希望拆分这些值,并为每个唯一的公司创建列。
- 我不知道你想用什么来填充这些列,所以我假设你想创建某种二进制或“存在”指示器。
如果我的阅读正确,请尝试我的“splitstackshape”包中的cSplit_e:
cSplit_e(mydf, "companies", ",", type = "character", mode = "binary", fill = 0)
# companies companies_BMC companies_HP companies_IBM
# 1 IBM, Oracle, Ping 0 0 1
# 2 IBM, Ping 0 0 1
# 3 HP, IBM, Nagios 0 1 1
# 4 Solarwinds, HP, Nagios 0 1 0
# 5 BMC, Solarwinds, HP, IBM, Nagios, SCOM 1 1 1
# companies_Nagios companies_Oracle companies_Ping companies_SCOM companies_Solarwinds
# 1 0 1 1 0 0
# 2 0 0 1 0 0
# 3 1 0 0 0 0
# 4 1 0 0 0 1
# 5 1 0 0 1 1
这假设我们开始的数据是:
mydf <- data.frame(
companies = c("IBM, Oracle, Ping",
"IBM, Ping",
"HP, IBM, Nagios",
"Solarwinds, HP, Nagios",
"BMC, Solarwinds, HP, IBM, Nagios, SCOM"))
还有一个drop 参数,如果您想删除原始列,可以将其设置为TRUE。