r - 我怎样才能 "pad"名称

标签 r

我有一个看起来像这样的 df:

df <- data.frame("Logger" = c("119_1", "1","2","3","119_2","5","6","7","119_3","7","8","9"),
                  "Temp"  =c (4.5, 5.7, 3.8, 8.9, 8.6, 10.5, 11.0, 7.8, 5.6, 7.8, 9.9, 17.3),
                  "RH"    = c(6.5, 2.7, 11.8, 4.9, 3.6, 12.5, 115.0, 3.8, 9.6, 1.8, 3.9,5.3))

但是,我想“填充”变量“Logger”的名称,以便所有数字都被姓氏替换,直到下一个。

所以,基本上我想要这样的输出:

df_desired <- data.frame("Logger" = c("119_1", "119_1","119_1","119_1","119_2","119_2","119_2","119_2","119_3","119_3","119_3","119_3"),
                 "Temp"  =c (4.5, 5.7, 3.8, 8.9, 8.6, 10.5, 11.0, 7.8, 5.6, 7.8, 9.9, 17.3),
                 "RH"    = c(6.5, 2.7, 11.8, 4.9, 3.6, 12.5, 115.0, 3.8, 9.6, 1.8, 3.9,5.3))

我该怎么做?我其实一点头绪都没有。我知道 padr 包存在,但我猜它只适用于日期和 NA。

最佳答案

您可以将没有_的值替换为NA,然后使用fill

library(dplyr)
library(tidyr)

df %>%
  mutate(Logger = replace(Logger, !grepl('_', Logger), NA)) %>%
  fill(Logger)

#    Logger Temp    RH
#1   119_1  4.5   6.5
#2   119_1  5.7   2.7
#3   119_1  3.8  11.8
#4   119_1  8.9   4.9
#5   119_2  8.6   3.6
#6   119_2 10.5  12.5
#7   119_2 11.0 115.0
#8   119_2  7.8   3.8
#9   119_3  5.6   9.6
#10  119_3  7.8   1.8
#11  119_3  9.9   3.9
#12  119_3 17.3   5.3

关于r - 我怎样才能 "pad"名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69281363/

相关文章:

r - 如何识别两(或更多)行不同(相同 ID)的列?

r - 限制 data.tables 中文本字符串显示长度的选项

r - 以编程方式将字符串宽度值插入 sprintf()

r - 如何停止 R gWidgets 脚本退出

r - 如何知道最好的 FASSTER 配方

r - 搜索所有现有函数以查找包依赖项?

r - require() 和library() 有什么区别?

r - R 中的多次 for 循环时间计算非常高

R 3.3.2 : lme4 + lmerTest problems under Mac OS Sierra

r - 是否可以将功能对象作为元素