首页 > 解决方案 > R:根据列索引将数据帧值从整数转换为双精度

问题描述

我有一个数据框,其中每一列对应于变量,每一行对应于数字类别,例如 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

我想根据列索引将每个值转换为双精度值。例如,上述表格将转换为:

 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

我该如何进行这种转换?

感谢您的时间和帮助!

标签: rdataframe

解决方案


您可以使用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

推荐阅读