R:根据列索引将数据帧值从整数转换为双精度

奥尔哈·霍洛德(Olha Kholod)

我有一个数据框,其中每一列对应变量,每一行对应数值类别,例如0、1或2。

df <- data.frame(TKI=c(1,1,2,0,1),
                 Chemo=c(1,2,2,0,1),
                 Radio=c(1,1,2,0,1),
                 EGFR=c(1,2,2,0,1),
                 ALK=c(1,1,2,0,1))
df

  TKI Chemo Radio EGFR ALK
1   1     1     1    1   1
2   1     2     1    2   1
3   2     2     2    2   2
4   0     0     0    0   0
5   1     1     1    1   1

我想基于列索引将每个值转换为double。例如,上述表将转换为以下形式:

 1.1 2.1 3.1 4.1 5.1
 1.1 2.2 3.1 4.2 5.1
 1.2 2.2 3.2 4.2 5.2
 1.0 2.0 3.0 4.0 5.0
 1.1 2.1 3.1 4.1 5.1

我还想获取列及其索引的列表,例如:

1 - TKI
2 - Chemo
3 - Radio
4 - EGFR
5 - ALK

我该如何转换?

感谢您的时间和帮助!

罗纳克·沙

您可以使用col获取列索引并将数据帧除以10以创建一个十进制值,然后将两个数字相加。

col(df) + df/10

#  TKI Chemo Radio EGFR ALK
#1 1.1   2.1   3.1  4.1 5.1
#2 1.1   2.2   3.1  4.2 5.1
#3 1.2   2.2   3.2  4.2 5.2
#4 1.0   2.0   3.0  4.0 5.0
#5 1.1   2.1   3.1  4.1 5.1

要获取列名及其位置,您可以执行以下操作:

ref_df <- data.frame(index = seq_along(df),
                     names = names(df))

#  index names
#1     1   TKI
#2     2 Chemo
#3     3 Radio
#4     4  EGFR
#5     5   ALK

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章