Na.Approx具有多个特定列

发布于 2025-01-24 13:25:46 字数 322 浏览 0 评论 0原文

我有一个带有许多列(Cola,Colb,Colc,Cold,Cold……)的DataFrame(DF)。我想将Na.AppRox函数和group_by应用于数据框架中的几个(但不是全部)列。我成功地在一列上应用了Na.Approx和group_by函数,并具有以下内容:

dfxna< -df%>%group_by(cola)%>%突变(colb = na.approx(colb,na.rm,na.rm) = false,maxGap = 4))

但是,我无法创建适用于几个(指定的列)的代码。我认为Lapply是合适的,并且尝试使用Lapply几次。

I have a dataframe (DF) with many columns (colA, colB, colC, colD, . . . . ). I would like to apply the na.approx function, with group_by, to several, but not all, columns in the dataframe. I succeeded in applying the na.approx and group_by functions on one column with the following:

DFxna<-DF %>% group_by(colA) %>% mutate(colB = na.approx(colB, na.rm = FALSE, maxgap=4))

However, I was not able to create a code that would apply to several, specified, columns. I thought that lapply would be appropriate, and tried several times, unsuccesfully, to use lapply.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泪是无色的血 2025-01-31 13:25:46

也许这适合您的需求。正如我在评论中提到的那样,一个选项是使用dplyr ::跨

使用一些虚假数据:

library(zoo)
library(dplyr)

DF <- data.frame(
  colA = c(1, 1, 1, 2, 2, 2, 2),
  colB = c(1, NA, 3, 5, NA, NA, 6),
  colC = c(1, NA, 2, 8, NA, 9, 6),
  colD = c(1, NA, 3, 5, NA, NA, 6)
)

DF %>% 
  group_by(colA) %>% 
  mutate(across(c(colB, colC), ~ na.approx(.x, na.rm = FALSE, maxgap=4)))
#> # A tibble: 7 × 4
#> # Groups:   colA [2]
#>    colA  colB  colC  colD
#>   <dbl> <dbl> <dbl> <dbl>
#> 1     1  1      1       1
#> 2     1  2      1.5    NA
#> 3     1  3      2       3
#> 4     2  5      8       5
#> 5     2  5.33   8.5    NA
#> 6     2  5.67   9      NA
#> 7     2  6      6       6

Maybe this fits your need. As I mentioned in my comment one option would be to use dplyr::across.

Using some fake data:

library(zoo)
library(dplyr)

DF <- data.frame(
  colA = c(1, 1, 1, 2, 2, 2, 2),
  colB = c(1, NA, 3, 5, NA, NA, 6),
  colC = c(1, NA, 2, 8, NA, 9, 6),
  colD = c(1, NA, 3, 5, NA, NA, 6)
)

DF %>% 
  group_by(colA) %>% 
  mutate(across(c(colB, colC), ~ na.approx(.x, na.rm = FALSE, maxgap=4)))
#> # A tibble: 7 × 4
#> # Groups:   colA [2]
#>    colA  colB  colC  colD
#>   <dbl> <dbl> <dbl> <dbl>
#> 1     1  1      1       1
#> 2     1  2      1.5    NA
#> 3     1  3      2       3
#> 4     2  5      8       5
#> 5     2  5.33   8.5    NA
#> 6     2  5.67   9      NA
#> 7     2  6      6       6
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文