我在R中有一个动物园对象,它有每日数据,并且错过了周末.当我尝试ar()在对象上运行某些函数时(例如)我得到错误:
mkt.ar <- ar(zoo_object)
Error in na.fail.default(as.ts(x)) : missing values in object
Run Code Online (Sandbox Code Playgroud)
如果我做:
mkt.ar <- ar(zoo_object, na.action=na.omit)
Error in na.omit.ts(as.ts(x)) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为当动物园试图将事物转换为ts时,周末本来就缺失了.除了将事物转换为使用coredata(zoo_object)和运行的向量之外ar(),有没有办法告诉R跳过丢失的数据?
谢谢
如果我有以下data.table:
dat <- data.table("id"=c(1,1,1,1,2,2,2,2), "var1"=c(NA,1,2,2,1,1,2,2),
"var2"=c(4,4,4,4,5,5,NA,4), "var3"=c(4,4,4,NA,5,5,5,4))
id var1 var2 var3
1: 1 NA 4 4
2: 1 1 4 4
3: 1 2 4 4
4: 1 2 4 NA
5: 2 1 5 5
6: 2 1 5 5
7: 2 2 NA 5
8: 2 2 4 4
Run Code Online (Sandbox Code Playgroud)
如何用id中每列的平均值替换缺失值?在我的实际数据中,我有许多变量,对于我想要替换的变量,所以如何以一般方式完成,例如它不会替换为var3而只替换为var1和var2?:
tomean=c("var1", "var2")
Run Code Online (Sandbox Code Playgroud)
我试过这样的东西,但我还没有找到解决方案:
dat[, (tomean) := mean(tomean, na.rm=TRUE), by=id, .SDcols = tomean]
Run Code Online (Sandbox Code Playgroud) 如果 an 的任何元素丢失,Statistics 包mean函数将返回。missingarray
julia> using Statistics
julia> mean([1 2 3 4 5] )
3.0
julia> mean([1 2 missing 4 5] ) # Note missing value
missing
Run Code Online (Sandbox Code Playgroud)
如何获得非缺失值的平均值?
我正在处理患者信息数据集,并尝试使用 MATLAB 根据数据计算倾向得分。删除具有许多缺失值的特征后,我仍然留下几个缺失(NaN)值。
当我尝试使用以下 Matlab 代码(来自 Andrew Ng 的 Coursera 机器学习课程)执行逻辑回归时,由于这些缺失值,我会遇到错误,因为我的成本函数和梯度向量的值变为 NaN:
[m, n] = size(X);
X = [ones(m, 1) X];
initial_theta = ones(n+1, 1);
[cost, grad] = costFunction(initial_theta, X, y);
options = optimset('GradObj', 'on', 'MaxIter', 400);
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
Run Code Online (Sandbox Code Playgroud)
注意:sigmoid 和 costfunction 是我为整体易用性而创建的工作函数。
如果我将所有 NaN 值替换为 1 或 0,则可以顺利执行计算。但是我不确定这是否是处理此问题的最佳方法,而且我也想知道我应该选择(通常)什么替换值获得使用缺失数据执行逻辑回归的最佳结果。使用特定数字(0 或 1 或其他数字)替换数据中所述缺失值有什么好处/缺点吗?
注意:我还将所有特征值标准化为 0-1 范围内。
对于这个问题的任何见解都将受到高度赞赏。谢谢
machine-learning nan missing-data logistic-regression data-cleaning
我正在尝试将 DataFrame 字符串列转换为 Julia 中的日期格式,但如果该列包含缺失值,则会产生错误:
ERROR: MethodError: no method matching Int64(::Missing)
Run Code Online (Sandbox Code Playgroud)
我尝试运行的代码(适用于没有丢失数据的列)是:
df_pp[:tod] = Date.(df_pp[:tod], DateFormat("d/m/y"));
Run Code Online (Sandbox Code Playgroud)
我尝试过的其他代码行是:
df_pp[:tod] = Date.(passmissing(df_pp[:tod]), DateFormat("d/m/y"));
df_pp[.!ismissing.(df_pp[:tod]), :tod] = Date.(df_pp[:tod], DateFormat("d/m/y"));
Run Code Online (Sandbox Code Playgroud)
tod该代码与名为 的数据框中命名的列相关df_pp。DataFrames在尝试此操作之前, &包均已Dates加载。
我有一个包含许多列和许多行的数据框。
col_1 | col_2 | ... | col_n
35 | NA | ... | 2
. | . | . | .
. | . | . | .
. | . | . | .
123 | 90 | ... | NA
Run Code Online (Sandbox Code Playgroud)
某些行包含 NA 值(可以超过 1 个 NA)。
我希望找到包含 1 个 NA 的所有行,并将其替换为其他列的总和。
我如何使用 tidyverse 来实现它?
我正在尝试使用 PySpark 用均值填充 NaN 值。以下是我正在使用的代码,以下是发生的错误:
from pyspark.sql.functions import avg
def fill_with_mean(df_1, exclude=set()):
stats = df_1.agg(*(avg(c).alias(c) for c in df_1.columns if c not in exclude))
return df_1.na.fill(stats.first().asDict())
res = fill_with_mean(df_1, ["MinTemp", "MaxTemp", "Evaporation", "Sunshine"])
res.show()
Run Code Online (Sandbox Code Playgroud)
错误:
Py4JJavaError Traceback (most recent call last)
<ipython-input-35-42f4d984f022> in <module>()
3 stats = df_1.agg(*(avg(c).alias(c) for c in df_1.columns if c not in exclude))
4 return df_1.na.fill(stats.first().asDict())
----> 5 res = fill_with_mean(df_1, ["MinTemp", "MaxTemp", "Evaporation", "Sunshine"])
6 res.show()
5 frames
/usr/local/lib/python3.7/dist-packages/py4j/protocol.py in get_return_value(answer,
gateway_client, target_id, name)
326 …Run Code Online (Sandbox Code Playgroud) 我已经盯着看几个小时了,我不知道在哪里可以找到像这样简单的问题的答案,所以我希望这不是一个重复的问题。
我有一个大数据框(936848 x 12),其中一列是一个编码名称,我可以从中导出其他列的值,在本例中,制造年份是根据列代码的第一个字符得出的。
数据框的小样本:
df <- data.frame(Code = c("AX123", "CL199", "GH679"),
Year = c(NA, "2014", "2018"))
Run Code Online (Sandbox Code Playgroud)
我只想仅在值丢失时才根据列代码更改“年份”列。我不想覆盖年份列中的现有值。
由于这还涉及识别代码中字符串中的第一个字母,因此我使用case_whenand startsWith:
df <- df %>%
filter(is.na(Year)) %>%
mutate(Year = case_when(startsWith(Code, "A") ~ 2013,
startsWith(Code, "C") ~ 2014,
startsWith(Code, "D") ~ 2015,
startsWith(Code, "E") ~ 2016,
startsWith(Code, "F") ~ 2017,
startsWith(Code, "G") ~ 2018,
startsWith(Code, "H") ~ 2019,
startsWith(Code, "J") ~ 2020,
TRUE ~ NA_real_
))
Run Code Online (Sandbox Code Playgroud)
这将给出这个结果:
Code Year
1 AX123 2013
Run Code Online (Sandbox Code Playgroud)
我的问题是我编写此过滤器以过滤掉数据框中所有非 NA 行的方式。我想保持数据框不变,只填充 NA 行。
我正在考虑将其嵌套到 ifelse …
如果包含缺失值,如何创建虚拟变量?我有以下数据,我想根据几个条件创建一个虚拟变量。我的问题是它会自动将我的缺失值转换为 0,但我想将它们保留为缺失值。
import pandas as pd
mydata = {'x' : [10, 50, np.nan, 32, 47, np.nan, 20, 5, 100, 62],
'y' : [10, 1, 5, np.nan, 47, np.nan, 8, 5, 100, 3]}
df = pd.DataFrame(mydata)
df["z"] = ((df["x"] >= 50) & (df["y"] <= 20)).astype(int)
print(df)
Run Code Online (Sandbox Code Playgroud) error_text我有一个 pandas DataFrame,其中包含许多行和一列名为包含多个空值的字符串。我想根据该列与另一列的相关性来填充这些缺失的数据。
mydf_example = pd.DataFrame({'a':[1,2,3,4,5,6,3],'b':[10,20,30,40,50,60,30],'c':['a','b','c','d','e','f','c'], 'error_text':[np.nan,'some_text','other_text',np.nan,'more_text','another_text',np.nan]})
mydf_example
a b c error_text
0 1 10 a NaN
1 2 20 b some_text
2 3 30 c other_text
3 4 40 d Nan
4 5 50 e more_text
5 6 60 f another_text
6 3 30 c NaN
Run Code Online (Sandbox Code Playgroud)
首先,我创建了sub_df删除丢失数据的行:
mydf_example = mydf_example.dropna()
mydf_example
a b c error_text
1 2 20 b some_text
2 3 30 c other_text
4 5 50 e more_text
5 6 60 f another_text
Run Code Online (Sandbox Code Playgroud)
然后我将该 …