R语言DataFrame数据清理:移除首行指定值并上移有效数据
解决CSV导入后的数据清理问题:上移列数据并保留指定时间值
原始数据情况:
df1 # Time HR Start # 1 Hour N 18:55:25 # 2 0:00:00 57 NA # 3 0:00:01 57 NA # 4 0:00:02 58 NA # ...
目标是将Time和HR列的有效数据上移一行,同时保留第一行的Start值,得到:
df1 # Time HR Start # 1 0:00:00 57 18:55:25 # 2 0:00:01 57 NA # 3 0:00:02 58 NA # ...
方法一:用dplyr直接偏移列数据
利用lead()函数将Time和HR列的内容向下偏移一行,同时保留第一行的Start值:
library(dplyr) df_cleaned <- df1 %>% mutate( Time = lead(Time), HR = lead(HR), Start = case_when(row_number() == 1 ~ Start, TRUE ~ NA) ) %>% filter(!is.na(Time))
方法二:复制Start值后删除首行
你提到的复制首行Start到第二行再删首行的思路完全可行,时间类型不会成为障碍——R会自动保留原列的数据类型:
# 把第一行的Start值赋值给第二行 df1$Start[2] <- df1$Start[1] # 删除第一行 df_cleaned <- df1[-1, ]
为什么之前的filter方法无效?
你尝试的filter()、str_detect()或grep()方法都会直接删除包含"Hour"的首行,导致首行的Start有效值被一并移除,这不符合需求。我们需要的是保留这个值,同时将下方的有效数据上移,而不是单纯过滤行。
内容的提问来源于stack exchange,提问作者elemarles
相关产品推荐
相关产品推荐

