如何创建一个字符串数据列,该列是R中另一列中字符串的转换?
如果我有这个数据集如何创建一个字符串数据列,该列是R中另一列中字符串的转换?,r,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 1
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
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>
R>vec-vec
[1] “Chrome/11”“Chrome/12”“Chrome/13”“Safari/101”“Safari/102”
R> newvec newvec
[1] “Chrome”“Chrome”“Safari”“Safari”
R>
这非常简单,因为正则表达式和字符串处理都是矢量化的,所以不需要循环。你可以用
等,并用空格替换“/…”gsub()
- 甚至使用带有“/”的
作为拆分字符,并保留第一个字符strsplit
- 当然,我现在想不出其他方法,经验表明有几种方法会涉及Hadley的软件包:)[开玩笑的话,也看看
软件包]stringr
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>
R>vec-vec
[1] “Chrome/11”“Chrome/12”“Chrome/13”“Safari/101”“Safari/102”
R> newvec newvec
[1] “Chrome”“Chrome”“Safari”“Safari”
R>
您可以使用colsplit
fromreformate
包执行此操作
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)
您可以使用
colsplit
fromreformate
包来执行此操作
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)
非常感谢!请注意,我将assignment包装在factor()语句中以获得字符串分组。mydata$clean_浏览器非常完美,谢谢!请注意,我将assignment包装在factor()语句中以获得字符串分组。mydata$clean_浏览器