使用R将非数字数据转换为数字数据

时间:2016-03-21 14:06:41

标签: r

我有一个这种格式的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后面是否有页数。 我正在寻找一种方法来修改这些非数字数据 有什么好主意吗? 最好

2 个答案:

答案 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)

尝试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"