【问题标题】:R - Pairs of values in a single vector: How to detect missing values?R - 单个向量中的值对:如何检测缺失值?
【发布时间】:2018-11-04 09:18:10
【问题描述】:

我有一个由值对组成的长向量;年与分数配对。每个值中的字符数始终相同(4 个字符代表年份,3 个字符代表分数)。

data <- c("2018", "5.5", "2016", "8.4", "2017", "6.6", "2018", "2017", "5.5", 
"2009", "7.9")

问题是缺少一些分数,而所有年份都存在:

matrix(data, ncol = 2, byrow = T)

[,1]   [,2]  
[1,] "2018" "5.5" 
[2,] "2016" "8.4" 
[3,] "2017" "6.6" 
[4,] "2018" "2017"
[5,] "5.5"  "2009"
[6,] "7.9"  "2018"

这样,当值对被移动时,我无法通过将其转换为矩阵或数据框来构造数据。

有没有办法检测何时发生不匹配,即。一年之后是另一年,并在两个值之间插入一个 NA?

【问题讨论】:

    标签: r


    【解决方案1】:

    当然,这是一个非常紧凑的方法:

    idx <- which(nchar(data) == 4)
    cbind(Year = data[idx], Score = ifelse(nchar(data[idx + 1]) == 3, data[idx + 1], NA))
    #      Year   Score
    # [1,] "2018" "5.5"
    # [2,] "2016" "8.4"
    # [3,] "2017" "6.6"
    # [4,] "2018" NA   
    # [5,] "2017" "5.5"
    # [6,] "2009" "7.9"
    

    在哪里使用 nchar 并且您的长度信息是关键。

    【讨论】:

    • @Garambullo,它回答了你的问题吗?
    猜你喜欢
    • 2021-01-14
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2021-08-10
    • 2013-05-21
    • 2019-08-24
    相关资源
    最近更新 更多