r - 提取数据框中的字符
问题描述
我有一个这样的数据框
Sample Marker1 Marker2 Marker 3
Sample1 230/250 301/302 140/150
Sample2 233/255 304/306 143/158
Sample3 221/250 304/310 140/152
我想把 / 标志两边的数字分开来得到这个。所以每列将分为 2 :
Sample Marker1a Marker1b Marker2a Marker2b Marker3a Marker3b
Sample1 230 250 301 302 140 150
Sample2 233 255 304 306 143 158
Sample3 221 250 304 310 140 152
我正在尝试使用 list 来做到这一点,但没有成功。也许这里有人会有更好的主意?安妮-索菲
解决方案
这是一种解决方案:
# create dataframe
d <- read.table(text='Sample Marker1 Marker2 Marker3
Sample1 230/250 301/302 140/150
Sample2 233/255 304/306 143/158
Sample3 221/250 304/310 140/152 ',
header=T, stringsAsFactor=F)
# loop over the Marker columns
for (col in paste0('Marker', 1:3)){
# create a list of splitted values
splitted.values <- strsplit(d[[col]], '/')
# add the first item of each list element to a
d[[paste0(col, 'a')]] <- sapply(splitted.values, '[', 1)
# add the second item of each list element to b
d[[paste0(col, 'b')]] <- sapply(splitted.values, '[', 2)
}
print(d)
Sample Marker1 Marker2 Marker3 Marker1a Marker1b Marker2a Marker2b Marker3a Marker3b
1 Sample1 230/250 301/302 140/150 230 250 301 302 140 150
2 Sample2 233/255 304/306 143/158 233 255 304 306 143 158
3 Sample3 221/250 304/310 140/152 221 250 304 310 140 152
推荐阅读
- reactjs - reactjs 放弃当前组件渲染
- windows - 在 Windows 命令行输出前附加文本
- c# - 如何在 c# 中使用递归来构建模型并将值分配给属性?
- java - 甚至不需要时需要通用参数?
- swift - UICollectionView 没有从数组中填充数据
- keras - 我们可以在不使用 keras 的情况下在 tensorflow2.0 中训练模型吗?
- php - CodeIgniter 错误“无法使用提供的设置连接到您的数据库服务器。”
- nfs - python os.utime 对 nfs 失败了?
- docker - 配置 docker-compose 日志以省略前置文本
- java - 我得到一个空列表,查询 java spring 时出错