![](/img/trans.png)
[英]How do I add a column to a data frame in R based on a partial string in another column?
[英]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.