[英]Remove a character from elements in a dataframe
我有一組數據,其中某些元素以“ <”開頭,並且需要刪除“ <”,以便可以執行一些數據分析。 數據保存在.txt文件中,我使用read.table將其帶入R。 以下是文本文件外觀的示例。
Background: 18 <10 27 22 <3
Site: 30 44 23 <16 13
我使用x=read.file
制作了一個數據x=read.file
,然后嘗試gsub("<","",x)
刪除"<"
,結果至少在我看來是完全出乎意料的。 結果就是我得到的。
[1] "1:2" "c(18, 30)" "1:2" "c(27, 23)" "c(2, 1)" "1:2"
我不知道那是什么意思,為什么會這樣。 我將非常感謝您對這里發生的事情以及應該如何實現自己的目標進行解釋。
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
使用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.