簡體   English   中英

如何創建一個字符串數據列,它是R中另一列中的字符串的轉換?

[英]How do I create a string data column that is a transformation of the strings in another column in R?

如果我有這個數據集

Browser          Count
Chrome/11         100
Chrome/11         89
Chrome/13         10
Safari/12         40
Safari/114        30      

我想獲得一種沒有版本號的更通用的瀏覽器形式。

Browser          Clean_Browser       Count
Chrome/11         Chrome              100
Chrome/11         Chrome              89
Chrome/13         Chrome              10
Safari/12         Safari              40 
Safari/114        Safari              30

我知道使用python或excel很容易做到這一點,但是有沒有一種方法可以在R中做到這一點,所以我不必對數據進行預處理?

這是正則表達式非常簡單的感謝,以及字符串處理---兩者都矢量化,所以你不需要循環。 你可以用

  • gsub()等,並用空格替換'/ ...'

  • 甚至使用帶有'/'作為分隔符的strsplit並保留第一個

  • 當然還有我現在無法想到的其他方法,經驗表明,其中有幾種將涉及Hadley的軟件包:) [ stringr ,也請看一下stringr軟件包]

這是一種方法,在向量上完成,但data.frame中的列是相同的:

R> vec <- c( paste("Chrome", 11:13, sep="/"), paste("Safari", 101:102, sep="/"))
R> vec
[1] "Chrome/11"  "Chrome/12"  "Chrome/13"  "Safari/101" "Safari/102"
R> newvec <- gsub("/.*$", "", vec, perl=TRUE)
R> newvec
[1] "Chrome" "Chrome" "Chrome" "Safari" "Safari"
R> 

您可以使用reshape包中的colsplit執行此操作。

df = read.table(textConnection(
"Browser          Count
Chrome/11         100
Chrome/11         89
Chrome/13         10
Safari/12         40
Safari/114        30"), sep = "", header = TRUE) 

require(reshape)
browser_version = colsplit(df$Browser, names = c('browser', 'version'), split = '[/]')
df = cbind(df, browser_version)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM