r - 如何使用apply()根据R中不同列中的条件添加新列
问题描述
我正在尝试使用 R 根据来自不同列的值创建一个新列。以下是 data.frame 的示例:
df<-data.frame(well=c("A01","A02","A03","B01","B02","B03","C01","C02","C03"))
df
well
1 A01
2 A02
3 A03
4 B01
5 B02
6 B03
7 C01
8 C02
9 C03
我是使用该apply()
函数的新手,所以我想知道如何编写一个代码,根据“井”列中的值创建一个名为“行”的新列。
我要实现的目标如下所示:
df2<-data.frame(well=c("A01","A02","A03","B01","B02","B03","C01","C02","C03"),
row=c("1","1","1","2","2","2","3","3","3")
df2
well row
1 A01 1
2 A02 1
3 A03 1
4 B01 2
5 B02 2
6 B03 2
7 C01 3
8 C02 3
9 C03 3
“井”列中的字母是“行”列中的值所依赖的,这就是导致我出现问题的原因。所以“Axx”会产生“1”,“Bxx”会产生2,依此类推。
解决方案
这是一个想法。我们可以使用gsub
从well
列中获取字母,转换为因子,然后再转换为数值。
# Create example data frame
df<-data.frame(well=c("A01","A02","A03","B01","B02","B03","C01","C02","C03"),
stringsAsFactors = FALSE)
df$row <- as.numeric(factor(gsub("[0-9]*", "", df$well)))
df
# well row
# 1 A01 1
# 2 A02 1
# 3 A03 1
# 4 B01 2
# 5 B02 2
# 6 B03 2
# 7 C01 3
# 8 C02 3
# 9 C03 3
推荐阅读
- python - 如果响应不是 json 格式,如何解析来自 python requests 方法的响应?
- python - Web 抓取表到 Pandas 数据框
- scala - Scala 函数和按名称调用的问题
- nancy - Nancy 自托管 404 错误
- javascript - 防止去抖动输入影响 React 中的扩展面板
- azure-devops - 我们可以在 azure DevOps 任务中为 azure data explorer 命令添加多个文件路径吗
- matplotlib - 如何在条形图的左侧显示负 x 值?
- reactjs - 使用自己的路由渲染另一个根路径
- flutter - 颤振容器变换
- c++ - 添加 2D 水平对齐和 2D 垂直对齐的 boost::multi_array 生成 3D 数组的最有效(时间、内存)方法是什么?