我有一组数据,其中一些元素前面带有"<"我需要删除"<"这样我就可以进行一些数据分析了。数据保存在.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"
我不知道这意味着什么或为什么会发生。我非常感谢对这里发生的事情的解释,以及我应该如何实现我的目标。
答案 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)