我有这个数据框:
set.seed(50)
data <- data.frame(age=c(rep("juv", 10), rep("ad", 10)),
sex=c(rep("m", 10), rep("f", 10)),
size=c(rep("large", 10), rep("small", 10)),
length=rnorm(20),
width=rnorm(20),
height=rnorm(20))
data$length[sample(1:20, size=8, replace=F)] <- NA
data$width[sample(1:20, size=8, replace=F)] <- NA
data$height[sample(1:20, size=8, replace=F)] <- NA
age sex size length width height
1 juv m large NA -0.34992735 0.10955641
2 juv m large -0.84160374 NA -0.41341885
3 juv m large 0.03299794 -1.58987765 NA
4 juv m large NA NA NA
5 juv m large -1.72760411 NA 0.09534935
6 juv m large -0.27786453 …Run Code Online (Sandbox Code Playgroud) 我需要集群一些数据,我想kmeans,pam和clara与R.
问题是我的数据位于数据框的一列中,并包含NA.
我曾经na.omit()得到我的集群.但是,我如何将它们与原始数据相关联?函数返回没有NA的整数向量,并且它们不保留有关原始位置的任何信息.
有没有一种聪明的方法将聚类与数据框中的原始观察结果联系起来?(或者在存在NA时智能地执行聚类的方法?)
谢谢
我有以下数据结构。在每个组中,都缺少一些观察结果value。我确实知道每个组只有一个非缺失值(在本例中10为组 1 和11组 2)。缺失观测值的位置在组内是随机的(即不能用前一个/后一个值填充缺失值)。
如何按组用一个非缺失值来填充缺失值?
group value
1 .
1 10
1 .
2 11
2 .
2 11
Run Code Online (Sandbox Code Playgroud)
我当前的解决方案是一个循环,但我怀疑bysort我可以使用一些聪明的方法。
levelsof group, local(lm_group)
foreach group in `lm_group' {
levelsof value if group == `group', local(lm_value)
replace value = `lm_value' if group == `group'
}
Run Code Online (Sandbox Code Playgroud) 我尝试通过交叉验证训练随机森林,并使用该caret包来训练 rf:
### variable return_customer = binary variable
idx.train <- createDataPartition(y = known$return_customer, p = 0.8, list = FALSE)
train <- known[idx.train, ]
test <- known[-idx.train, ]
k <- 10
set.seed(123)
model.control <- trainControl(method = "cv", number = k, classProbs = TRUE, summaryFunction = twoClassSummary, allowParallel = TRUE)
rf.parms <- expand.grid(mtry = 1:10)
rf.caret <- train(return_customer~., data = train, method = "rf", ntree = 500, tuneGrid = rf.parms, metric = "ROC", trControl = model.control)
Run Code Online (Sandbox Code Playgroud)
运行该train函数时,我收到此错误代码,但没有缺失值return_customer …
我是 R 新手,正在解决一个问题。
我需要一个函数来根据给定大小的窗口内元素的平均值来估算向量中的缺失值。
然而,这个窗口将会移动,因为假设我的NA位置为 30,而我的窗口大小为 10,则应该计算 的平均值x[20:40]。因此,对于每个找到的NA,窗口均值都会不同。
我一直在尝试这个:
impute.to.window.mean <- function(x, window) {
na.idx <- is.na(x) #find missing values in x
for (na in na.idx) {
y <- (x[na]-window):(x[na]+window)
na.idx[na] <- mean(y, na.rm = TRUE)
}
return(x)
}
Run Code Online (Sandbox Code Playgroud)
但这是不正确的,我不知道如何继续。
我有一个 netcdf 文件,其中的数据是 lon、lat 和 time 的函数。我想计算在时间维度上求和的每个网格单元中缺失条目的总数,最好使用 CDO 或 NCO,因此我不需要调用 R、python 等。
我知道如何获得缺失值的总数
ncap2 -s "nmiss=var.number_miss()" in.nc out.nc
Run Code Online (Sandbox Code Playgroud)
正如我对这个相关问题的回答: count number of missing values in netcdf file - R
并且 CDO 可以告诉我空间总和
cdo info in.nc
Run Code Online (Sandbox Code Playgroud)
但我不知道如何随着时间的推移求和。例如,有没有一种方法可以指定要在 ncap2 中使用 number_miss 求和的维度?
此堆栈链接显示如何返回数组中的值booleans。missing
例如:
julia> A = [1, 2, 3, missing, 4, 5, 6, missing, 7, 8, missing, 9, 10]
13-element Array{Union{Missing, Int64},1}:
1
2
3
missing
4
5
6
missing
7
8
missing
9
10
julia> ismissing.(A)
13-element BitArray{1}:
false
false
false
true
false
false
false
true
false
false
true
false
false
Run Code Online (Sandbox Code Playgroud)
如何返回他们的索引?
我必须更换价值吗?使用 NaN 以便您可以调用 .isnull () 方法。我找到了几种解决方案,但总是返回一些错误。认为:
data = pd.DataFrame([[1,?,5],[?,?,4],[?,32.1,1]])
Run Code Online (Sandbox Code Playgroud)
如果我尝试:
pd.data.replace('?', np.nan)
Run Code Online (Sandbox Code Playgroud)
我有:
0 1 2
0 1.0 NaN 5
1 NaN NaN 4
2 NaN 32.1 1
Run Code Online (Sandbox Code Playgroud)
但 data.isnull() 返回:
0 1 2
0 False False False
1 False False False
2 False False False
Run Code Online (Sandbox Code Playgroud)
为什么?
Pandas fillna()速度非常慢,尤其是在数据框中存在大量丢失数据的情况下。
还有比它更快的方法吗?
(我知道如果我简单地删除一些包含 NA 的行和/或列会有帮助)
我想将尺寸为 (3960, 225) 的X (ndarray) 保存在 Excel 文件 (.xlsx) 中。在X中,我有一些缺失值(nan)。我为它编写了一个代码。但是,我收到错误。
这是代码:
workbook = xlsxwriter.Workbook('arrays.xlsx')
worksheet = workbook.add_worksheet()
row = 0
for col, data in enumerate(X):
worksheet.write_column(row, col, data)
workbook.close()
df = pd.DataFrame(X)
## save to xlsx file
filepath = 'my_excel_file.xlsx'
df.to_excel(filepath, index=False)
Run Code Online (Sandbox Code Playgroud)
这是回溯:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 2020.2.1\plugins\python\helpers\pydev\pydevd.py", line 1448, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2020.2.1\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, …Run Code Online (Sandbox Code Playgroud)