给定一个向量,例如(比如说),c(2,NA,5,NA,NA,1,NA)问题是“最后的观察结转”导致向量c(2,2,5,5,5,1,1)。
正如这里所回答的,na.locf从zoo包中可以做到这一点。然而,考虑到问题的简单性,以及要在“空白”R 环境中执行多次的事实,我想在不加载包的情况下执行此操作。有没有一种方法可以仅使用基本的 R 简单快速地完成此操作?(向量可能很长并且可能包含许多连续的 NA。)
我有一个大型数据框,其中一些列由于取 0 的日志而具有 NA。
我一直在对数据进行各种测试(ANOVA、Tukey、Kruskal Wallis、Mann Whitney),但我无法弄清楚 NA 值发生了什么。
R 是否完全排除了这些值?
我正在尝试imputeTS包中的功能。该包提供了多个函数来估算单变量时间序列数据中的缺失值。我测试了它们,除了功能之外,它们都很棒na_kalman。此函数更改原始数值向量。下面是一个例子。
# Load packages
library(imputeTS)
# Set seeds
set.seed(123)
# Generate 10 random number
dat <- rnorm(10)
# Replace the first 10 numbers to be NA
dat[1:5] <- NA
# Check the numbers in dat
dat
[1] NA NA NA NA NA 1.7150650 0.4609162 -1.2650612 -0.6868529
[10] -0.4456620
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我创建了一个包含 10 个数字的向量,而前 5 个数字是NA。
# Apply the na_kalman function
dat2 <- na_kalman(dat)
# Check the numbers in dat2
dat2
[1] 1.7150650 1.7150650 1.7150650 1.7150650 1.7150650 …Run Code Online (Sandbox Code Playgroud) 我的数据框中有一个NaN值列表,我想用空字符串替换 NaN 值。
到目前为止我已经尝试过,但不起作用:
df_conbid_N_1 = pd.read_csv("test-2019.csv",dtype=str, sep=';', encoding='utf-8')
df_conbid_N_1['Excep_Test'] = df_conbid_N_1['Excep_Test'].replace("NaN","")
Run Code Online (Sandbox Code Playgroud) 我现在正在处理丢失的数据。我的测试和训练集中缺少数据。我对如何处理测试集中缺失的数据感到有些困惑。如果我使用“均值”方法进行插补,如果我想插补测试集中的缺失值,我应该使用从训练集或测试集计算的均值。感谢你们对我的帮助!
我使用 AWS RDS 控制台创建了包含多个架构的 Postgresql v11 数据库的快照备份。然后我从备份创建了一个新实例。该过程似乎运行良好,没有错误。然而,在检查新实例中的数据时,我注意到只有一个模式中的数据未保留。模式结构、表、索引、约束等看起来不错,但每个表都是空的(模式中每个表的 select count(*) from schema.table 都是 0)。所有其他模式看起来都很好并且包含预期的数据。在尝试解决这个问题时,我到处寻找(无法在网上找到有关此问题的帮助),并自己尝试了许多测试(更改角色、重建架构、权限等等)。什么会导致我的快照保留整个架构结构,但丢失所有数据本身?
postgresql snapshot relational-database amazon-web-services missing-data
我正在尝试运行 Amelia 以使用以下代码在几个变量上估算一些缺失的数据:
set.seed(1) zz[,c("id", "sex", "team", "minsSocial", "satisTravail", "performance")] <- Amelia::amelia(zz[,c("id ", "sex", "team", "minsSocial", "satisTravail", "performance")], m=1, idvars="id", noms=c("sex","team"))$imputations$进出口1
不幸的是,我收到此错误消息:
Erreur : 下标AMr1.orig是一个矩阵,数据的x.imp[, -possibleFactors][AMr1.orig]大小必须为 1。
关于问题出在哪里以及我如何解决它的任何疑虑?是因为我的数据包含 <1 的值吗?
谢谢!
在处理 Rcpp 程序时,我使用了 sample() 函数,这给了我以下错误:“概率不允许 NA。” 我将这个问题追溯到我使用的概率向量中包含 NA 值的事实。我不知道如何。下面是一些捕获错误的 R 代码:
n.0=20
n.1=20
n.reps=1
beta0.vals=rep(seq(-.3,.1,,n.0),n.reps)
beta1.vals=rep(seq(-7,0,,n.1),n.reps)
beta.grd=as.matrix(expand.grid(beta0.vals,beta1.vals))
n.rnd=200
beta.rnd.grd=cbind(runif(n.rnd,min(beta0.vals),max(beta0.vals)),runif(n.rnd,min(beta1.vals),max(beta1.vals)))
beta.grd=rbind(beta.grd,beta.rnd.grd)
N = 22670
count = 0
for(i in 1:dim(beta.grd)[1]){ # iterate through 600 possible beta values in beta grid
beta.ind = 0 # indicator for current pair of beta values
for(j in 1:N){ # iterate through all possible Nsums
logit = beta.grd[i,1]/N*(j - .1*N)^2 + beta.grd[i,2];
phi01 = exp(logit)/(1 + exp(logit))
if(is.na(phi01)){
count = count + 1
}
}
} …Run Code Online (Sandbox Code Playgroud) 当我们知道要保留的非 NaN 数量时,本网站中的 Pandas 和其他问题/答案为这种情况提供了解决方案。如何有效地仅删除最差的行,或者如果有多个行是最差的行。下面的一些示例展示了如何通过设置轴来删除列,也可以删除行。然而,我们需要指定要保留多少个非 NaN。
>>> import numpy as np
>>> df = pd.DataFrame([[1,np.nan,1,np.nan], [1,1,1,1], [1,np.nan,1,1], [np.nan,1,1,1]], columns=list('ABCD'))
A B C D
0 1.0 NaN 1 NaN
1 1.0 1.0 1 1.0
2 1.0 NaN 1 1.0
3 NaN 1.0 1 1.0
>>> df.dropna(thresh=3, axis=1)
A C D
0 1.0 1 NaN
1 1.0 1 1.0
2 1.0 1 1.0
3 NaN 1 1.0
Run Code Online (Sandbox Code Playgroud)
或者完全删除它们:
>>> df.dropna(axis=1)
C
0 1
1 1
2 1
3 1
Run Code Online (Sandbox Code Playgroud)
请注意, 我在下面提供了更多背景信息。虽然欢迎提供具体解决方案的提示,但我更喜欢帖子标题中所述的有关一般情况的答案。
上下文 …
问题的例子
date X Y
2012-07-05 00:01:19 0.0122 NA
2012-07-05 03:19:34 0.0121 NA
2012-07-05 03:19:56 0.0121 0.027
2012-07-05 03:20:31 0.0121 0.027
2012-07-05 04:19:56 0.0121 0.028
2012-07-05 04:20:31 0.0121 0.028
2012-07-05 04:20:50 0.0121 0.028
Run Code Online (Sandbox Code Playgroud)
我怎样才能填补NA与0.027在Y列?
missing-data ×10
r ×5
dataframe ×2
imputation ×2
na ×2
pandas ×2
python ×2
data-science ×1
imputets ×1
nan ×1
performance ×1
postgresql ×1
probability ×1
snapshot ×1
subscript ×1
time-series ×1