gpt4 book ai didi

r - 用向量中最后一个非空值填充空值

转载 作者:行者123 更新时间:2023-12-04 09:42:59 24 4
gpt4 key购买 nike

我想用它前面的值填充向量中的缺失值(不是 NA,只是 ''!)。例如,如果我有一个向量定义为

vec <- c('Titanic', '', '', '', 'Donnie Darko', '', '', 'Twin Peaks', 
'American Hustle', '')

我的输出向量是

'Titanic', 'Titanic', 'Titanic', 'Titanic', 'Donnie Darko', 'Donnie Darko', 
'Donnie Darko', 'Twin Peaks', 'American Hustle', 'American Hustle'

我怎样才能做到这一点?

最佳答案

这是一个包含 nzchar 和子集的两行代码,应该非常有效。

# get logical vector of elements with non-empty character elements
notMissings <- nzchar(movies)
# fill in missing values
movies[notMissings][cumsum(notMissings)]
[1] "Titanic" "Titanic" "Titanic" "Titanic"
[5] "Donnie Darko" "Donnie Darko" "Donnie Darko" "Twin Peaks"
[9] "American Hustle" "American Hustle"

这是使用 rle 的第二种方法。

# get run length encodings
temp <- rle(movies)
# get missing values
missings <- nchar(temp$values) == 0
# fill in missing values
temp$values[missings] <- temp$values[which(missings) - 1]

# expand
inverse.rle(temp)
[1] "Titanic" "Titanic" "Titanic" "Titanic"
[5] "Donnie Darko" "Donnie Darko" "Donnie Darko" "Twin Peaks"
[9] "American Hustle" "American Hustle"

请注意,如果第一个元素是空字符 '',则第二种方法将抛出错误。

数据

movies <- c('Titanic', '', '', '', 'Donnie Darko', '', '', 'Twin Peaks',
'American Hustle', '')

关于r - 用向量中最后一个非空值填充空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43837049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com