首页 > 解决方案 > 如何将特定列值从字符向量转换为数值向量?

问题描述

我有一个 .csv 文件,我想在其中将所有列转换为数字。我的小标题下面有一个示例。.csv 文件包含坐标 x 和 y,它们对应于海洋中的特定位置或“站”。我想让它以数字形式返回列中标记的站(当前为字符)。

grinches_tibble2$station <- as.numeric(grinches_tibble2$station, 
                                                             c(1 = "G9A",
                                                               2 = "G9B",
                                                               3 = "G10A",
                                                               4 = "G11D",
                                                               5 = "G11E",
                                                               6 = "G12A",
                                                               7 = "G11A", 
                                                               8 = "G12D", 
                                                               9 = "G13A", 
                                                               10 = "G13B"))

因此,在我的 tibble 中,这些站被标记为 G9A、G10A 等。我希望他们读取数字而不是 G9A 是 1。所以 G9A 站现在是 1 号站。拜托,任何事情都会有所帮助。

标签: rcharacternumericdplyrtibble

解决方案


假设我们有这样的数据:

library(dplyr)
#Data
Data <- data.frame(station=c("G9A","G9B","G10A","G11D","G11E",
                             "G12A","G11A","G12D","G13A", "G13B"),
                   stringsAsFactors = F)
Data
   station
1      G9A
2      G9B
3     G10A
4     G11D
5     G11E
6     G12A
7     G11A
8     G12D
9     G13A
10    G13B

dplyr使用mutate()and 和as.numeric()as可以获得接近预期的结果as.factor()

#Code
new <- Data %>%
  mutate(station=factor(station,levels = unique(station),ordered = T)) %>%
  mutate(station2=as.numeric(as.factor(station)))

输出:

   station station2
1      G9A        1
2      G9B        2
3     G10A        3
4     G11D        4
5     G11E        5
6     G12A        6
7     G11A        7
8     G12D        8
9     G13A        9
10    G13B       10

推荐阅读