r - 将整个数据框中的字母转换为数字

标签 r dataframe

我在应用 chartr() 时遇到问题函数在我的数据框的所有列上将字母转换为数字。

我设法在单列上执行此操作,但我希望能够在整个数据框上执行此操作。这是我的数据示例:

ID = c(1,2,3)
POS1 = c('AG','GC','TT')
POS2 = c('GT','CC','TC')
POS3 = c('GG','CT','AT')
DF = data.frame(ID,POS1,POS2,POS3)

DF$POS1X <- chartr('ACGT','1234',DF$POS1)

  ID POS1 POS2 POS3 POS1X
1  1   AG   GT   GG    13
2  2   GC   CC   CT    32
3  3   TT   TC   AT    44

从代码中可以看出,我想将 A 转换为 1,C 转换为 2,G 转换为 3,T 转换为 4。我有 40 多列,因此重复上述相同的命令 40 多次是不切实际的(特别是如果我稍后遇到同样的问题,比如数百列)

真诚的,
ykl

最佳答案

为什么不使用 lapply ?

DF2 <- DF ## to not overwrite the original DF
DF2[-1] <- lapply(DF2[-1], chartr, old = "ACGT", new = "1234")
DF2
#   ID POS1 POS2 POS3
# 1  1   13   34   33
# 2  2   32   22   24
# 3  3   44   42   14

现在您有两个具有等效列名的数据框,我发现它们比将新列附加到旧数据更容易进行比较。特别是当有很多很多列时。

关于r - 将整个数据框中的字母转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661170/

相关文章:

r - 如何添加不同长度的向量?

从 boxplot 和 plotly 中删除异常值

pandas - 通过将列名与 int 和字符串连接来对多索引列进行索引

python - Pandas:基于公共(public)列连接两个数据框的最佳方式

python - 从 Excel 表构建 HDF5 结构

r - 对 selectizeInput 使用 onchange 回调选项

r - 使用 plyr::mutate 以矢量化方式提取列表部分?

r - fit$loadings 和 fit$Vaccounted 之间的差异在因素分析中占方差?

python - 来自列表值字典的 Pandas 数据框

python - 如何对 pandas 数据框中的字母数字列进行排序