我有一个这种格式的csv文件:
android ; login.html , connect.json , page1.json
windows ; login.html , connect.json , page1.json , page2.html , page5.html
windows ; login.html , connect.json , page4.json
要对这些变量进行PCA多变量分析,这些变量必须是数字,如下所示:
1 ; 3
0 ; 5
0 ; 3
0或1表示windows或android后面是否有页数。 我正在寻找一种方法来修改这些非数字数据 有什么好主意吗? 最好
答案 0 :(得分:2)
这是一种方法:
data.frame(V1 = as.numeric(mydf$V1 == "android"),
V2 = count.fields(textConnection(mydf$V2), sep = ","))
# V1 V2
# 1 1 3
# 2 0 5
# 3 0 3
示例数据:
mydf <- read.table(
header = FALSE, sep = ";", stringsAsFactors = FALSE, strip.white = TRUE,
text = '"android" ; "login.html , connect.json , page1.json"
"windows" ; "login.html , connect.json , page1.json , page2.html , page5.html"
"windows" ; "login.html , connect.json , page4.json"')
答案 1 :(得分:1)
尝试strsplit
和lengths
:
DF <- read.table(text = Lines, sep = ";", as.is = TRUE, strip.white = TRUE)
transform(DF, V1 = as.numeric(V1 == "android"), V2 = lengths(strsplit(V2, ",")))
,并提供:
V1 V2
1 1 3
2 0 5
3 0 3
注意:我们使用了这个输入:
Lines <- "android ; login.html , connect.json , page1.json
windows ; login.html , connect.json , page1.json , page2.html , page5.html
windows ; login.html , connect.json , page4.json"