假设我有如下的dataframe:
df = data.frame(C1 = rep(c("A", "B"), 20),
C2 = c(NA, rep(c("J", "K"), 19), "J"),
C3 = c(NA, rep(c("J", "K"), 19), "J"),
C4 = rep(c("C", "D"), 20))
这给了我以下两个第一行:
| C1|C2|C3|C4|
| --------------|--------------|--------------|--------------|
| A|不适用|不适用|C|
| B|J|J|D|
是否有任何函数允许用左边第一个非空单元格填充列C2
和C3
,即用值A
填充?(依此类推;例如,如果我有列C5
和NA
,它将用值C
填充此单元格)
我的尝试不是那么“可管道”:
require(tidyverse)
df[1,] <- (as.data.frame(unlist(df[1,])) %>% fill(`unlist(df[1, ])`))[,1]
谢谢大家!
3条答案
按热度按时间8ftvxx2r1#
在各行中应用
na.locf
:也可以写成:
更新
已经采纳了TarJae的建议。
bq8i3lrv2#
使用
dplyr
和tidyr
进行旋转的方法:kkih6yb83#
首先将
t
转换为宽格式,然后执行fill
,最后转换回长格式。在此过程沿着重命名行和列。