我正在尝试使用不丢失的值返回向量中的最新行。例如,给定
x <- c(1,2,NA,NA,3,NA,4)
Run Code Online (Sandbox Code Playgroud)
然后,函数(x)将输出类似以下的列表:
c(1,2,2,2,3,3,4)
Run Code Online (Sandbox Code Playgroud)
非常简单的问题,但是在多个列上使用循环或蛮力运行它会永远花费。
我有一个数据框
Id Name Affiliation
9 Ernest Jordan
14 K. MORIBE
15 D. Jakominich
25 William H. Nailon
37 P. B. Littlewood Cavendish Laboratory|Cambridge University
44 A. Kuroiwa Department of Molecular Biology|School of Science|Nagoya
75 M. Till-berg
Run Code Online (Sandbox Code Playgroud)
我想知道有多少行是不完整的,即缺少数据.在这种情况下,ID(9,14,15,25,75)的行有关联.所以在这种情况下结果应该是5.
我试过了
dim(author_data[complete.cases(author_data),])
Run Code Online (Sandbox Code Playgroud)
但它没有显示正确的结果.它输出为
7 3
Run Code Online (Sandbox Code Playgroud)
即7行3列
谢谢
鉴于以下示例数据集:
df <- as.data.frame(matrix( c(1, 2, 3, NA, 5, NA,
7, NA, 9, 10, NA, NA), nrow=2, ncol=6))
names(df) <- c( "varA", "varB", "varC", "varD", "varE", "varF")
print(df)
varA varB varC varD varE varF
1 1 3 5 7 9 NA
2 2 NA NA NA 10 NA
Run Code Online (Sandbox Code Playgroud)
我希望能够在数据集上使用 kmeans(...) ,而无需手动检查或删除变量内任何地方包含 NA的变量。虽然我现在正在询问 kmeans(...) 我将使用类似的过程处理其他事情,因此 kmeans(...) 具体答案不会完全回答我的问题。
我想要的手动版本是:
kmeans_model <- kmeans(df[, -c(2:4, 6)], 10)
Run Code Online (Sandbox Code Playgroud)
伪代码将是:
kmeans_model <- kmeans(df[, -c(colnames(is.na(df)))], 10)
Run Code Online (Sandbox Code Playgroud)
另外,我不想从 df 中删除数据。提前致谢。
(显然 kmeans(...) 不适用于此示例数据集,但我无法重新创建真实数据集)
我NA在表中有正,负和值,我需要用值替换负值NA.正数和NA值应保持在表中.我的数据集类似于下面的数据集:
NO. q
1 NA
2 NA
3 -133.6105198
4 -119.6991209
5 28.84460104
6 66.05345087
7 84.7058947
8 -134.4522694
9 NA
10 NA
11 73.20465643
12 -69.90723514
13 NA
14 69.70833003
15 65.27859906
Run Code Online (Sandbox Code Playgroud)
我试过这个:
if (q>0) {
q=NA
} else {
q=q
}
Run Code Online (Sandbox Code Playgroud) 我有一些缺少值的数据框
A 1
A NA
A NA
B NA
B 2
B NA
C NA
C NA
C NA
Run Code Online (Sandbox Code Playgroud)
如何填写有数据的组?
我有一个如下所示的数据框
Id Date Col1 Col2 Col3 Col4
30 2012-03-31 A42.2 20.46 NA
36 1996-11-15 NA V73 55
96 2010-02-07 X48 Z16 13
40 2010-03-18 AD14 20.12 36
69 2012-02-21 22.45
11 2013-07-03 81 V017 TCG11
22 2001-06-01 67
83 2005-03-16 80.45 V22.15 46.52 X29.11
92 2012-02-12
34 2014-03-10 82.12 N72.22 V45.44
Run Code Online (Sandbox Code Playgroud)
我正在尝试计算每行中NA或空单元格的数量,最终预期输出如下
Id Date Col1 Col2 Col3 Col4 MissCount
30 2012-03-31 A42.2 20.46 NA 2
36 1996-11-15 NA V73 55 2
96 2010-02-07 X48 Z16 13 …Run Code Online (Sandbox Code Playgroud) 我有一个.csv包含缺少值的行的文件.这些值代替null,由字符表示?.
如何删除包含至少一个具有值的列的行?,因为它df.na.drop()不起作用(因为缺少的值不是null)?
数据如下所示(我有35列 - 可以在任何列中找到缺失值)
+-------+--------+------+-------+
| col_1 | col_2 | ... | col_35|
+-------+--------+------+-------+
| 0.75 | ? | ... | 15 |
| ? | Helen | ... | 21 |
| -1.2 | George | ... | ? |
| ? | Andrew | ... | 129 |
| 0.12 | Maria | ... | 12 | // Should not be deleted
+-------+--------+------+-------+
Run Code Online (Sandbox Code Playgroud)
这是读取文件的代码.
val …Run Code Online (Sandbox Code Playgroud) 我想为几组列估算缺失值。这个想法是对于数值变量,我想使用中位数来估算NA,对于分类变量,我想使用模式来估算NA. 我确实搜索了如何为不同的列集分别估算它,但没有找到。
我的数据很大,有很多列,所以我把它放在data.table 中。由于我不确定如何在 data.table 中执行此操作,因此我尝试了下面的代码库 R。我尝试了下面的代码,但不知何故,我似乎弄乱了列名标识。
我的数据很大并且有多个变量。我存储载体数值变量var_num,我存储载体分类变量var_chr。
请参阅下面的示例代码 -
library(data.table)
set.seed(1200)
id <- 1:100
bills <- sample(c(1:20,NA),100,replace = T)
nos <- sample(c(1:80,NA),100,replace = T)
stru <- sample(c("A","B","C","D",NA),100,replace = T)
type <- sample(c(1:7,NA),100,replace = T)
value <- sample(c(100:1000,NA),100,replace = T)
df1 <- as.data.table(data.frame(id,bills,nos,stru,type,value))
class(df1)
var_num <- c("bills","nos","value")
var_chr <- c("stru","type")
impute <- function(x){
#print(x)
if(colnames(x) %in% var_num){
x[is.na(x)] = median(x,na.rm = T)
} else if (colnames(x) …Run Code Online (Sandbox Code Playgroud) 我有以下DataFrame由整数值组成:
df = pd.DataFrame(data=1, columns=['a','b'], index=[1,2,3])
a b
1 1 1
2 1 1
3 1 1
Run Code Online (Sandbox Code Playgroud)
我想在单个单元格上设置缺失值,当我尝试时:
df.at[1,'a'] = np.nan
Run Code Online (Sandbox Code Playgroud)
然后我得到这个例外:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "pandas/core/indexing.py", line 2159, in __setitem__
self.obj._set_value(*key, takeable=self._takeable)
File "pandas/core/frame.py", line 2582, in _set_value
engine.set_value(series._values, index, value)
File "pandas/_libs/index.pyx", line 124, in pandas._libs.index.IndexEngine.set_value
File "pandas/_libs/index.pyx", line 133, in pandas._libs.index.IndexEngine.set_value
File "pandas/_libs/index.pyx", line 570, in pandas._libs.index.convert_scalar
ValueError: Cannot assign nan to integer series
Run Code Online (Sandbox Code Playgroud) 我知道如何使用带有填充或填充的groupby方法来估算缺少的值。但是我的问题是,我需要首先在“日期”列中找到与“得分”列中的空值最接近的日期,如果分数列中的值不为空,则用该值进行插补。如果该值为空,则需要搜索另一个最近的日期。我可以遍历行并执行此操作,但是速度非常慢。
这是数据的示例:
df = pd.DataFrame(
{'cn': [1, 1, 1, 1, 2, 2, 2],
'date': ['01/10/2017', '02/09/2016', '02/10/2016','01/20/2017', '05/15/2019', '02/10/2016', '02/10/2017'],
'score': [np.nan, np.nan, 6, 5, 4, np.nan, 8]})
cn date score
0 1 01/10/2017 NaN
1 1 02/09/2016 NaN
2 1 02/10/2016 6
3 1 01/20/2017 5
4 2 05/15/2019 4
5 2 02/10/2016 NaN
6 2 02/10/2017 8.0
Run Code Online (Sandbox Code Playgroud)
输出应该是
cn date score
0 1 01/10/2017 5
1 1 02/09/2016 6
2 1 02/10/2016 6
3 1 01/20/2017 5
4 …Run Code Online (Sandbox Code Playgroud) missing-data ×10
r ×7
dataframe ×2
pandas ×2
python ×2
apache-spark ×1
assign ×1
conditional ×1
count ×1
data.table ×1
function ×1
imputation ×1
na ×1
scala ×1
vector ×1