问题已从原始编辑.
在阅读了这个有趣的讨论后,我想知道如何使用dplyr替换列中的NAs,例如Lahman击球数据:
Source: local data frame [96,600 x 3]
Groups: teamID
yearID teamID G_batting
1 2004 SFN 11
2 2006 CHN 43
3 2007 CHA 2
4 2008 BOS 5
5 2009 SEA 3
6 2010 SEA 4
7 2012 NYA NA
Run Code Online (Sandbox Code Playgroud)
以下不能像我预期的那样工作
library(dplyr)
library(Lahman)
df <- Batting[ c("yearID", "teamID", "G_batting") ]
df <- group_by(df, teamID )
df$G_batting[is.na(df$G_batting)] <- mean(df$G_batting, na.rm = TRUE)
Run Code Online (Sandbox Code Playgroud)
来源:本地数据框[20 x 3]组:yearID,teamID
yearID teamID G_batting
1 2004 SFN 11.00000 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用包含分组数据的na.locf包.我在这个问题上使用第一个解决方案:使用dplyr窗口函数来设置尾随值(填写NA值)zoodplyr
library(dplyr);library(zoo)
df1 <- data.frame(id=rep(c("A","B"),each=3),problem=c(1,NA,2,NA,NA,NA),ok=c(NA,3,4,5,6,NA))
df1
id problem ok
1 A 1 NA
2 A NA 3
3 A 2 4
4 B NA 5
5 B NA 6
6 B NA NA
Run Code Online (Sandbox Code Playgroud)
当在一个组内,所有数据都是NA时,就会出现问题.正如您在问题列中看到的那样na.locf,id = B 的数据来自另一个组:id = A的最后一个数据.
df1 %>% group_by(id) %>% na.locf()
Source: local data frame [6 x 3]
Groups: id [2]
id problem ok
<chr> <chr> <chr>
1 A 1 <NA>
2 A 1 3
3 A 2 4
4 …Run Code Online (Sandbox Code Playgroud) 我的数据框看起来像这样 -
dataset = data.frame(ID=c(1:3),Count=c(22,NaN,13))
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用管道运算符将 NaN 替换为 0
dataset = dataset %>% replace('NaN',0)
Run Code Online (Sandbox Code Playgroud)
然而这不起作用。我查看了该网站上的解决方案,但似乎没有一个有效。
任何意见都将受到高度赞赏。
我有一个时间序列数据,如下所示.
2015-04-26 23:00:00 5704.27388916015661380
2015-04-27 00:00:00 4470.30868326822928793
2015-04-27 01:00:00 4552.57241617838553793
2015-04-27 02:00:00 4570.22250032825650123
2015-04-27 03:00:00 NA
2015-04-27 04:00:00 NA
2015-04-27 05:00:00 NA
2015-04-27 06:00:00 12697.37724086216439900
2015-04-27 07:00:00 5538.71119009653739340
2015-04-27 08:00:00 81.95060647328695325
2015-04-27 09:00:00 8550.65816895300667966
2015-04-27 10:00:00 2925.76573206583680076
Run Code Online (Sandbox Code Playgroud)
我该如何处理Continous NA值.在我只有一个NA的情况下,我用来取NA条目的极值的平均值.是否有任何标准方法来处理连续缺失值?