2016-03-21 50 views
0

我有这种格式的CSV文件:变换非数字数据,数字数据有R

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表示窗口或android后面是多少页。 我正在寻找一种方法来修改这些非数字数据 任何想法请吗? 最佳

+1

阅读与分隔符为' “;”',用'count.fields'第二列和''==在第列.... – A5C1D2H2I1M1N2O1R2T1

回答

1

尝试strsplitlengths

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" 
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"') 
+0

谢谢@手推车和马海毛它的工作原理。干杯 – Fish