使用因子与水平给我NA

时间:2014-02-20 13:23:51

标签: r sorting rank r-factor

有些东西我无法弄清楚 这是我的数据集

 Proband Lauf Interleukin Ansatz    Zeitpunkt  
    1        3    2        IFNy   stim         ZP21
    2        3    2         iL2   stim    ZP4        
    3        3    2         iL2   stim         ZP14  
    4        5    3         iL2   stim         ZP21  
    5        4    3         iL2   stim   ZP2         
    6        4    3         iL2   stim    ZP4        
    7        4    3         iL2   stim        ZP28   
    8        9    5         iL2   stim ZP0           
    9       13    6        IFNy   stim    ZP4        
    10      13    6         iL2   stim      ZP7      
    11      16    7         iL2   stim         ZP21  
    12      16    7         iL2   stim        ZP28   

我想要点击“Zeitpunkt”,所以我接下来做了什么:

pvalsig1 <- read.csv2(file="pvalsig.csv", fill=NA, na.strings="")
pvalsig1 <- pvalsig[,1:5]
pvalsig1$Zeitpunkt <- as.character(pvalsig1$Zeitpunkt)
pvalsig1$Zeitpunkt <- factor(pvalsig1$Zeitpunkt, levels=c("ZP0", "ZP2", "ZP4", "ZP7", "ZP14", "ZP21", "ZP28", "ZP35", "ZPM9", "ZPM9+1"))  

给了我

Proband Lauf Interleukin Ansatz Zeitpunkt
1        3    2        IFNy   stim      ZP21
2        3    2         iL2   stim      <NA>
3        3    2         iL2   stim      ZP14
4        5    3         iL2   stim      ZP21
5        4    3         iL2   stim      <NA>
6        4    3         iL2   stim      <NA>
7        4    3         iL2   stim      <NA>
8        9    5         iL2   stim      <NA>
9       13    6        IFNy   stim      <NA>
10      13    6         iL2   stim      <NA>
11      16    7         iL2   stim      ZP21
12      16    7         iL2   stim      <NA>  

我确信,它之前与“Zeitpunkt”栏中的不规则排队有关。但我无法弄清楚它是什么以及我如何驾驭它。 THX

1 个答案:

答案 0 :(得分:3)

尝试:

pvalsig1$Zeitpunkt <- factor(gsub("\\s*", "", pvalsig1$Zeitpunkt), levels=c("ZP0", "ZP2", "ZP4", "ZP7", "ZP14", "ZP21", "ZP28", "ZP35", "ZPM9", "ZPM9+1"))

这将删除列中的所有空格。您遇到的问题是,您尝试使用级别为"ZP0 "的{​​{1}}等值创建因子,因此由于额外的空格,值不匹配。

请注意,如果您的因子级别可以包含空格或其他空白字符,这将会中断,但如果是这种情况,您可以非常轻松地将正则表达式调整为:

ZP0

此外,根据您从中获取此数据的位置,某些输入函数具有剥离额外空格的功能(例如"(^\\s+|\\s*$)" 具有read.table参数)。

此外,快速搜索R trim可以拉出 popular SO answer