gpt4 book ai didi

r - 如何在 R 中创建一个函数来检查数据错误?

转载 作者:行者123 更新时间:2023-12-04 11:20:45 27 4
gpt4 key购买 nike

我有很多温度数据的 csv 文件,我正在将这些文件导入到 R 中进行处理。这些文件看起来像:

ID   Date.Time          temp1    temp2
1 08/13/17 14:48:18 15.581 -0.423
2 08/13/17 16:48:18 17.510 -0.423
3 08/13/17 18:48:18 15.390 -0.423

有时第 3 列和第 4 列中的温度读数明显错误,必须用 NA 值替换。我知道任何超过 50 或低于 -50 的值都是错误的。我想立即删除这些。使用

df[,c(3,4)]<- replace(df[,c(3,4)], df[,c(3,4)] >50, NA)
df[,c(3,4)] <- replace(df[,c(3,4)], df[,c(3,4)] < -50, NA)

有效,但我真的不想为每个文件重复此操作,因为它看起来很乱。

我想做一个函数来替换所有这些:

df<-remove.errors(df[,c(3,4)])

我试过:

remove.errors<-function (df) {
df[,]<- replace(df[,], df[,] > 50, NA)
df[,]<- replace(df[,], df[,] < -50, NA)
}

df<-remove.errors(df[,c(3,4)])

这有效,但不幸的是只保留了第 3 和第 4 列,而前两列消失了。我玩这段代码太久了,还尝试了一些其他根本不起作用的东西。

我知道我可能遗漏了一些基本的东西。任何人有关于制作一个函数的任何提示,该函数将在不更改前两列的情况下用 NA 替换第 3 列和第 4 列中的值?

最佳答案

1)试试这个。它仅使用基础 R。

clean <- function(x, max = 50, min = -max) replace(x, x > max | x < min, NA)
df[3:4] <- clean(df[3:4])

1a) 或者我们可以这样做(不会覆盖 df):

transform(df, temp1 = clean(temp1), temp2 = clean(temp2))

2) 添加 magrittr 我们可以这样做:

library(magrittr)
df[3:4] %<>% { clean(.) }

3) 在 dplyr 中我们可以这样做:

library(dplyr)

df %>% mutate_at(3:4, clean)

关于r - 如何在 R 中创建一个函数来检查数据错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52617214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com