将chr向量转换为r中的双向量

时间:2015-12-19 20:03:48

标签: r dplyr

如何将包含chr向量的data.frame转换为带双数的向量?

数据如下:

> head(klima)
   category  Jan  Feb  Mar  Apr  Mai  Jun  Jul  Aug  Sep  Oct  Nov  Dez
1 MaxTemperatur  2,8  4,7  9,5 13,4 18,2 21,6 24,3 23,7 19,1 13,8  7,3  3,5
2 MinTemperatur -3,6 -3,1  0,2  3,0  7,4 10,5 12,5 12,3  8,9  5,4  0,4 -2,3
3    Temperatur -0,4  0,7  4,7  8,1 12,7 16,0 18,3 17,7 13,7  9,3  3,7  0,6
4            NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
5  Niederschlag   60   55   73   82  119  111  106  116   99   88   76   74
6            NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>

我想用dplyr整理这个数据集并收集。

    klima.bern.tn <- klima.bern %>% 
  na.omit() %>% 
  filter(category=="Temperatur" | 
           category=="Niederschlag" | 
           category=="MaxTemperatur" |
           category=="MinTemperatur" ) %>%
  gather(month,value,-category,convert=TRUE)

这给出了以下数据结构:

> str(klima.tn)
'data.frame':   48 obs. of  3 variables:
 $ category: chr  "MaxTemperatur" "MinTemperatur" "Temperatur" "Niederschlag" ...
 $ month   : chr  "Jan" "Jan" "Jan" "Jan" ...
 $ value   : chr  "2,8" "-3,6" "-0,4" "60" ...

> head(klima.tn)
       category month value
1 MaxTemperatur   Jan   2,8
2 MinTemperatur   Jan  -3,6
3    Temperatur   Jan  -0,4
4  Niederschlag   Jan    60
5 MaxTemperatur   Feb   4,7
6 MinTemperatur   Feb  -3,1

现在我想将值数据集格式化为flollow,我在逗号后面得到3个逗号值。

> head(klima.tn)
       category month   value
1 MaxTemperatur   Jan   2,800
2 MinTemperatur   Jan  -3,600
3    Temperatur   Jan  -0,400
4  Niederschlag   Jan  60,000
5 MaxTemperatur   Feb   4,700
6 MinTemperatur   Feb  -3,100

我怎样才能做到这一点?

感谢任何帮助。

此致 克里斯

1 个答案:

答案 0 :(得分:0)

如果R可以计算as.numeric(myChars)中表示的数值,那么简单myChars 通常可以解决问题。它足够聪明地意识到as.numeric("1.5") == 1.5

您添加了1.5表示为"1,5"的复杂功能,这让您感到困惑。这可以通过

快速解决
newValues <- gsub(",", ".", klima.tn$value)
numericValues <- as.numeric(newValues)