我有一个包含一些空值的数据框:
A B C
1 Red 3
2 Blue 4
3 Green 5
1 Red ?
2 Blue ?
3 Green ?
我想填写"?"具有相应的值(第一个?3,第二个?4和第三个?5)
答案 0 :(得分:2)
可以使用data.table
library(data.table)
setDT(df1)[, C := C[C!="?"][1L] , by = B][, C := as.numeric(C)]
df1
# A B C
#1: 1 Red 3
#2: 2 Blue 4
#3: 3 Green 5
#4: 1 Red 3
#5: 2 Blue 4
#6: 3 Green 5
或dplyr
library(dplyr)
df1 %>%
group_by(B) %>%
mutate(C = as.numeric(C[C!= "?"][1L]))
注意:我们假设“B”列为character
类