将字符列转换为数据框中的列表

时间:2017-06-01 18:20:10

标签: r

当我将csv文件读入 df 时, SoftwareOwner 是一个字符列

> df
   Software    SoftwareOwner
   <chr>       <chr>
1  I-DEAS      Siemens
2  TeamViewer  Autodesk, TeamViewer, Siemens
3  Inventor    PTC, Google, SpaceClaim, Bricys
4  AutoCAD     Autodesk

我想在此数据框中使 SoftwareOwner 成为一个列表,所以我尝试了简单的解决方案

> df$SoftwareOwner <- as.list(df$SoftwareOwner)

但所有这一切都是使列中的每个条目都有一个条目

> df$SoftwareOwner[2]
[[1]]
[1]  "Autodesk, TeamViewer, Siemens"

我已尝试将 sep =&#34;,&#34; all.names = TRUE 等参数添加到 as.list 但都没有奏效。在调用类似上面的内容时,有没有办法只访问 Autodesk TeamViewer Siemens

2 个答案:

答案 0 :(得分:0)

我是否可以建议将Siemens,Autodesk,Teamviewer等用于自己的列并编写1或0来表示所有权?根据我的经验,这是一种更灵活的方法。

答案 1 :(得分:0)

可能的解决方案:

# recreate your data.frame
df <- read.csv(text=
"Software;SoftwareOwner
I-DEAS;Siemens
TeamViewer;Autodesk, TeamViewer, Siemens
Inventor;PTC, Google, SpaceClaim, Bricys
AutoCAD;Autodesk",sep=";")


df$SoftwareOwner <- lapply(strsplit(as.character(df$SoftwareOwner),split=','),trimws)


# > df$SoftwareOwner
# [[1]]
# [1] "Siemens"
# 
# [[2]]
# [1] "Autodesk"   "TeamViewer" "Siemens"   
# 
# [[3]]
# [1] "PTC"        "Google"     "SpaceClaim" "Bricys"    
# 
# [[4]]
# [1] "Autodesk"


# > df$SoftwareOwner[[2]][3]
# [1] "Siemens"

# > df$SoftwareOwner[[3]][2]
# [1] "Google"