R语言 如何分隔同时包含双精度和整数的字符列?

hrirmatl  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(122)

我有一个包含以下内容之一的字符列:

  • 双精度数和整数(用逗号分隔),用可变数量的空格分隔(例如“3.40 128,489”)
  • 负双精度数,用中的双精度数和用逗号分隔的整数表示,用可变数量的空格分隔(例如“<1.20>128,489”)
  • 仅限带逗号的整数(124,893)

我需要两个列。一个是双精度的,另一个是整数的。如果字段只有整数,双精度列可以是NA。

a <- c("2.45     238,948", "<1.40>  43,280", "1,234,580", "2.89 3389")
b <- data.frame(a)

我尝试使用单独的函数:

c <- lapply(b, function(x) {x %>% separate(a[1], into = c("rate","Period_Plan"), sep =" ", fill = 'left' )})

然而,我得到这个错误:
UseMethod(“单独”)中出错:没有适用于'separate'的方法应用于类“character”的对象

c2e8gylq

c2e8gylq1#

read.table(text=chartr("<>", "- ",sub("^(?=\\S+$)", "NA ", gsub(",","",a), perl = TRUE)))
     V1      V2
1  2.45  238948
2 -1.40   43280
3    NA 1234580
4  2.89    3389

细分一下:

d <- gsub(",","",a) # remove commas
e <- sub("^(?=\\S+$)", "NA ", d, perl = TRUE) # add NA if no double
f <- chartr("<>", "- ", e) #convert <> to negative
read.table(text = f)# read into table

     V1      V2
1  2.45  238948
2 -1.40   43280
3    NA 1234580
4  2.89    3389

相关问题