将11个级别的因子转换为字符或数字

我有以下数据框(从csv导入)与一系列11个级别的因素。

> df_ave[1,]
        ExtCal.Average ExtCal.Average.1 ExtCal.Average.2 ExtCal.Average.3 ExtCal.Average.4 ExtCal.Average.5
Isotope            7Li              11B              31P             63Cu             66Zn             85Rb
        ExtCal.Average.6 ExtCal.Average.7 ExtCal.Average.8 ExtCal.Average.9 ExtCal.Average.10 ExtCal.Average.11
Isotope             88Sr             90Zr            137Ba            139La             140Ce             141Pr
        ExtCal.Average.12 ExtCal.Average.13 ExtCal.Average.14 ExtCal.Average.15 ExtCal.Average.16
Isotope             146Nd             147Sm             153Eu             157Gd             172Yb
        ExtCal.Average.17 ExtCal.Average.18 ExtCal.Average.19 ExtCal.Average.20
Isotope             178Hf             208Pb             232Th              238U

我想将该行转换为字符(所以我可以用它来替换列名),但如果我做as.character(df_ave[1,]) ,我会得到:

[1] "10" "6"  "5"  "10" "10" "10" "10" "10" "7"  "7"  "6"  "6"  "7"  "6"  "7"  "6"  "7"  "6"  "8"  "6"  "6" 

不是我所期望的! 我做错了什么?

对于第二行同样的事情,这是一个我希望转换为数字的11个级别的因子(小数点后面没有2位数字,而不是整数):

> df_ave[2,]
         ExtCal.Average   ExtCal.Average.1   ExtCal.Average.2  ExtCal.Average.3   ExtCal.Average.4
3622 406.69367683495113 125.40906252040027 93581.601747523237 3003.005804863546 19973.538736364932
       ExtCal.Average.5   ExtCal.Average.6 ExtCal.Average.7   ExtCal.Average.8   ExtCal.Average.9
3622 3.9733143041662951 103289.61846650975 89140.8626528866 104283.72610637423 13235.807622402481
      ExtCal.Average.10  ExtCal.Average.11  ExtCal.Average.12  ExtCal.Average.13  ExtCal.Average.14
3622 27535.452396889865 3566.5632181365959 14399.937899081722 3284.1060413886876 1069.0985077873447
     ExtCal.Average.15  ExtCal.Average.16  ExtCal.Average.17  ExtCal.Average.18 ExtCal.Average.19
3622 3555.409906877464 1657.8443498763834 2314.1788460028692 2057.1117900629424 3011.643780160347
      ExtCal.Average.20
3622 552.89402766758417

我试过: > as.numeric(paste(df_ave[2,]))但得到:

[1]  7  7 10  7  6  7  4  9  5  6  7  7  6  7  5  7  6  7  7  7  9

显然不是预期的水平。 如果输入> as.numeric(df_ave[2,])我会得到相同的结果。 我想它是返回因子水平,而不是价值本身? 任何帮助赞赏。 这些因素让我疯狂。


有很多方法,但我能找到的最直接的方法是使用as.matrix首先转换为字符:

df <- data.frame(a=factor(1), b=factor(2), c=factor(3))
as.numeric(as.matrix(df)[1,])
链接地址: http://www.djcxy.com/p/24953.html

上一篇: convert factor with 11 levels to character or numeric

下一篇: How can I convert a factor variable with missing values to a numeric variable?