在R中的数据框中重命名列的内容时丢失数据

时间:2018-03-21 18:04:43

标签: r

我想使用以下命令重命名数据框PitchAccenttotal列中的某些行:

total$PitchAccent <- sub("!H*","H*", total$PitchAccent)

因此!H*现在变为H*

但是,当我之后检查H*的数量时,它会保持与之前相同的状态,而!H*次出现似乎已经消失。 而且,现在我做的时候:

summary(total$PitchAccent)

它没有告诉我:

> summary(total$PitchAccent)
  !H*  !H*L    *?   ..H   ..L    H%    H*   H*?   H*L  H*L?  HH*L    L%    L* 
  262  2125     0    25   633     0  2056     0  6122     0     6     0   460 
  L*?   L*H  L*H?  L*HL    no !H*L?  LH*L     L    !H    H!    .L  L*!H L*HL? 
    0  7818     0    53 69569     0     2     1     0     0     1     1     0 

,而只是:

> summary(total$PitchAccent)
   Length     Class      Mode 
    89134 character character

2 个答案:

答案 0 :(得分:2)

摘要更改的原因是sub()强制输入字符。因此总的$ PitchAccent不再是具有不同级别的因素,而是性格。因此摘要不提供任何有用的信息。强迫它回到因素 total$PitchAccent = as.factor(total$PitchAccent)

答案 1 :(得分:1)

具体地将因子的级别从!H *更改为H *

total$PitchAccent <- factor(total$PitchAccent)
levels(total$PitchAccent)[ levels(total$PitchAccent) == "!H*" ] <- "H*"

然后,如果您想将其恢复为字符格式,请按如下方式进行投射。

total$PitchAccent <- as.character(total$PitchAccent)

使用gsubsub,您可以执行此操作

gsub("!H*", "H*", total$PitchAccent, fixed = TRUE )
sub("!H*", "H*", total$PitchAccent, fixed = TRUE )