从数据框

时间:2017-07-26 01:32:45

标签: r dataframe gsub

我有一组数据,其中一些元素前面带有"<"我需要删除"<"这样我就可以进行一些数据分析了。数据保存在.txt文件中,我使用read.table将其带入R中。下面是文本文件的示例。

Background: 18 <10 27 22 <3

Site: 30 44 23 <16 13

我使用x=read.file制作数据框,然后尝试gsub("<","",x)删除"<",结果是完全出乎意料的,至少对我而言。这就是我得到的结果。

[1] "1:2"       "c(18, 30)" "1:2"       "c(27, 23)" "c(2, 1)"   "1:2"   

我不知道这意味着什么或为什么会发生。我非常感谢对这里发生的事情的解释,以及我应该如何实现我的目标。

2 个答案:

答案 0 :(得分:0)

df <- read.table(header = TRUE, text = "Background   Site
                 18   30
                 <10  44
                 27   23
                 22  <16
                 <3   13", stringsAsFactors = FALSE)

您可以使用mutate_at并将gsub函数应用于您要删除前一个Background符号的变量(即Site<

library(dplyr)
df %>% mutate_at(vars(Background, Site), 
                 funs(as.numeric(gsub("^<", "", .))))

输出结果为:

  Background Site
1         18   30
2         10   44
3         27   23
4         22   16
5          3   13

答案 1 :(得分:0)

使用readLines阅读文件,执行gsub,然后使用read.table重新阅读。没有使用包裹:

read.table(text = gsub("<", "", readLines("myfile")), as.is = TRUE)

如果数据不是来自文件但已经在数据框DF中,那么定义一个clean函数,该函数会清除DF列,并将其应用于每个数字列:

clean <- function(x) as.numeric(gsub(">", "", x))
DF[-1] <- lapply(DF[-1], clean)