首页 > 解决方案 > 迭代地重命名列中相同特定值的第一次和第二次出现

问题描述

在这个df1 列X的数据框中,值a多次出现:

数据框:

df <- structure(list(col = c("<NA>", "<NA>", "a", "<NA>", "<NA>", "<NA>", 
                       "a", "<NA>", "<NA>", "<NA>", "<NA>", "<NA>", "a", "<NA>", "<NA>", 
                       "a", "<NA>", "<NA>", "a", "<NA>", "<NA>", "a", "<NA>")), class = "data.frame", row.names = c(NA, 
                                                                                                                    -23L))

我想重命名第一个aasstart和第二个aasend和下一个aasstart和下一个aasend等等....

所需的输出:

df1 <- structure(list(col = c("<NA>", "<NA>", "start", "<NA>", "<NA>", 
                       "<NA>", "end", "<NA>", "<NA>", "<NA>", "<NA>", "<NA>", "start", 
                       "<NA>", "<NA>", "end", "<NA>", "<NA>", "start", "<NA>", "<NA>", 
                       "end", "<NA>")), class = "data.frame", row.names = c(NA, -23L
                       ))

非常感谢!!!

标签: rtibble

解决方案


利用 R 的回收特性。

df$col[df$col == 'a'] <- c('start', 'end')
df

#     col
#1   <NA>
#2   <NA>
#3  start
#4   <NA>
#5   <NA>
#6   <NA>
#7    end
#8   <NA>
#9   <NA>
#10  <NA>
#11  <NA>
#12  <NA>
#13 start
#14  <NA>
#15  <NA>
#16   end
#17  <NA>
#18  <NA>
#19 start
#20  <NA>
#21  <NA>
#22   end
#23  <NA>

推荐阅读