可能重复:
R-删除data.frame中具有NA的行
我有一个从以下函数派生的数据框:
complete <- function(directory,id = 1:332) {
csvfiles <- sprintf("/Users/myname/Desktop/%s/%03d.csv", directory, id)
nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))
rowlabels <- nrow(nrows)
data.frame(id=sprintf('%3d', id),
nobs=sapply(csvfiles,function(x) length(count.fields(x))),
row.names=rowlabels
)
}
Run Code Online (Sandbox Code Playgroud)
此函数计算对象csvfiles生成的目录中包含的每个文件中的行数。然后,它输出一个显示文件号以及行数(因此为两列)的数据帧
以为我有它,但是问题是我现在必须在NA存在实例的每个文件中排除行。
我将如何编辑它以忽略每个文件中的那些行,而仅计算不NA存在的行?
编辑过的帖子
这是原帖的简短版本.
Amelia,impute,mi和mice...).这就是归因应该完全基于训练数据.原帖(TL; DR)
简而言之,我有一些复杂的数据可以做.我们有一个~100k 20D样本的训练数据集和一个较小的测试数据集.每个要素/维度都是连续变量,但比例不同.有两个不同的类.两个数据集都是非常NA膨胀的(NAs在维度上不是均匀分布的).我sklearn.ensemble.ExtraTreesClassifier用于分类,虽然树集合可以处理丢失的数据案例,但有三个理由可以进行估算
scikit树集合(都ExtraTrees和RandomForest)的实现不处理缺失值.但这一点并不重要.如果它不是前两个我会使用rpy2+一些不错的R实现.训练数据集的情况非常简单,因为我可以应用特定于类的中位插补策略来处理缺失值,这种方法到目前为止一直运行良好.显然,这种方法不能应用于查询 - 我们没有开始的类.由于我们知道类可能在查询中具有显着不同的份额,因此我们无法应用类无关紧要的方法,因为这可能会引入偏差并降低分类性能,因此我们需要从模型中计算缺失值.
由于以下几个原因,线性模型不是一种选择:
基于树的回归模型出于同样的原因并不好.因此我们最终选择kNN(k个最近邻居),球树或具有半径阈值的LSH更具体.这种方法非常适合这项任务,因为维度(ergo距离)是相关的,因此我们在极其NA的情况下获得了良好的性能,但有几个缺点:
impute,sklearn.preprocessing.Imputer,orange),处理功能的载体配合多套不同缺失值的,这是我们希望有一个只为缺失的功能所有可能的组合imputer.以下是我想听到您的意见:
数据
以下是训练数据集的一小部分示例.我减少了功能的数量,使其更具可读性.查询数据具有相同的结构,除了明显缺少category信息.
v1 v2 v3 v4 v5 category
0.40524 0.71542 NA 0.81033 0.8209 1
0.78421 0.76378 0.84324 0.58814 0.9348 2
0.30055 NA 0.84324 NA 0.60003 …Run Code Online (Sandbox Code Playgroud) 我根据三件事索引价格数据:
状态,日期和UPC(即产品代码).
我有一堆NA的价格.
我试图通过以下方式填充NA:对于具有索引(S,D,UPC)的给定缺失价格,使用相同的S和UPC填写所有数据点的平均价格.即,取平均日期.
必须有一种非常简单的方法来做到这一点,因为这非常简单.我一直在使用for循环,但我现在意识到这是非常低效的,我想使用一个函数,比如plyr或dplyr中的函数,它将尽可能少地完成所有操作.
upc=c(1153801013,1153801013,1153801013,1153801013,1153801013,1153801013,2105900750,2105900750,2105900750,2105900750,2105900750,2173300001,2173300001,2173300001,2173300001)
date=c(200601,200602,200603,200604,200601,200602,200601,200602,200603,200601,200602,200603,200604,200605,200606)
price=c(26,28,NA,NA,23,24,85,84,NA,81,78,24,19,98,NA)
state=c(1,1,1,1,2,2,1,1,2,2,2,1,1,1,1)
# This is what I have:
data <- data.frame(upc,date,state,price)
# This is what I want:
price=c(26,28,27,27,23,24,85,84,79.5,81,78,24,19,98,47)
data2 <- data.frame(upc,date,state,price)
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢.
我需要从向量中删除前导和尾随缺失值 ( NA)。NA应保留数字之间的 s。请注意,我的下一步是索引另一个向量,NA并且只保留与第一个向量中位置相同的值。这是示例:
a <- c(NA, NA, NA, NA, NA, 5,2,3,1,2,1,5,2, NA, NA, 2,3,2,NA,NA,NA)
b <- sample(1:21)
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
a1 <- c(5,2,3,1,2,1,5,2,NA,NA,2,3,2)
# leading and trailing NAs removed
b1 <- b[6:18]
# subset with the indices kept in "a" above.
Run Code Online (Sandbox Code Playgroud)
我想我可以用条件循环来做到这一点,但我想对它进行矢量化。谢谢你的帮助!
predict.lm当因变量 Y 的某些值丢失时,我不明白如何使用该命令从线性回归生成预测值,即使没有独立的 X 观测值丢失。从代数上讲,这不是问题,但我不知道在 R 中执行此操作的有效方法。以这个假数据框和回归模型为例。我尝试在源数据框中分配预测,但由于缺少一个 Y 值而无法这样做:我收到错误消息。
# Create a fake dataframe
x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(100,200,300,400,NA,600,700,800,900,100)
df <- as.data.frame(cbind(x,y))
# Regress X and Y
model<-lm(y~x+1)
summary(model)
# Attempt to generate predictions in source dataframe but am unable to.
df$y_ip<-predict.lm(testy)
Error in `$<-.data.frame`(`*tmp*`, y_ip, value = c(221.............
replacement has 9 rows, data has 10
Run Code Online (Sandbox Code Playgroud)
我通过使用代数df$y<-B0+ B1*df$x生成预测或通过调用模型的系数生成预测来解决这个问题df$y<-((summary(model)$coefficients[1, 1]) + (summary(model)$coefficients[2, 1]*(df$x));但是,我现在正在使用具有数百个系数的大数据模型,这些方法不再实用。我想知道如何使用该predict功能来做到这一点。
预先感谢您的帮助!
我希望有条件地使用tidyverse取代截至2017年7月16日的缺失收入.
我的数据
library(tidyverse)
library(lubridate)
df<- tribble(
~Date, ~Revenue,
"2017-07-01", 500,
"2017-07-02", 501,
"2017-07-03", 502,
"2017-07-04", 503,
"2017-07-05", 504,
"2017-07-06", 505,
"2017-07-07", 506,
"2017-07-08", 507,
"2017-07-09", 508,
"2017-07-10", 509,
"2017-07-11", 510,
"2017-07-12", NA,
"2017-07-13", NA,
"2017-07-14", NA,
"2017-07-15", NA,
"2017-07-16", NA,
"2017-07-17", NA,
"2017-07-18", NA,
"2017-07-19", NA,
"2017-07-20", NA
)
df$Date <- ymd(df$Date)
Run Code Online (Sandbox Code Playgroud)
我想要有条件地替换NA的日期
max.date <- ymd("2017-07-16")
Run Code Online (Sandbox Code Playgroud)
输出我想要的
# A tibble: 20 × 2
Date Revenue
<chr> <dbl>
1 2017-07-01 500
2 2017-07-02 501
3 2017-07-03 502
4 2017-07-04 503
5 …Run Code Online (Sandbox Code Playgroud) 我想用“缺失值”替换我的 df 一列中的缺失值。我试过
result['emp_title'].fillna('missing')
Run Code Online (Sandbox Code Playgroud)
或者
result['emp_title'] = result['emp_title'].replace({ np.nan:'missing'})
Run Code Online (Sandbox Code Playgroud)
第二个有效,因为当我计算此代码后的缺失值时:
result['emp_title'].isnull().sum()
Run Code Online (Sandbox Code Playgroud)
它给了我 0。但是,第一个没有按我预期的那样工作,它没有给我 0,而不是之前的缺失值计数。为什么第一个不起作用?谢谢!
以下是调用API时返回的示例输出:
curl "https://mywebsite.com/api/cars.json&page=1" | jq '.'
Run Code Online (Sandbox Code Playgroud)
使用jq,将如何计算数字或记录charge缺少密钥的位置?我知道代码的第一位将包括在内,jq '. | length'但是如何过滤掉包含或不包含某个键值的对象?
如果应用于以下示例,则输出为 1
{
"current_page": 1,
"items": [
{
"id": 1,
"name": "vehicleA",
"state": "available",
"charge": 100
},
{
"id": 2,
"name": "vehicleB",
"state": "available",
},
{
"id": 3,
"name": "vehicleB",
"state": "available",
"charge": 50
}
]
}
Run Code Online (Sandbox Code Playgroud) 我的目标是通过向前滚动来按组填充缺失值。
虚拟数据
library(data.table)
DT <- structure(list(CLASS = c("A", "A", "A", "A", "A", "A", "B", "B","B"),
VAL = c(NA, 1, NA, NA, 2, NA, 50, NA, 100)),
.Names = c("CLASS", "VAL"),
row.names = c(NA, -9L), class = c("data.table", "data.frame"))
> DT
CLASS VAL
1: A NA
2: A 1
3: A NA
4: A NA
5: A 2
6: A NA
7: B 50
8: B NA
9: B 100
Run Code Online (Sandbox Code Playgroud)
想要的结果
CLASS VAL
1: A NA
2: A 1
3: A …Run Code Online (Sandbox Code Playgroud) 我似乎无法在Julia版本0.6.4中将值更改为缺失(我相信它在0.6之前被允许).
示例代码:
using Dataframes
x = zeros(5)
5-element Array{Float64,1}:
0.0
0.0
0.0
0.0
0.0
x[3] = missing
ERROR: MethodError: Cannot `convert` an object of type Missings.Missing to an
object of type Float64
This may have arisen from a call to the constructor Float64(...),
since type constructors fall back to convert methods.
Stacktrace:
[1] setindex!(::Array{Float64,1}, ::Missings.Missing, ::Int64) at ./array.jl:583
Run Code Online (Sandbox Code Playgroud)
在此设置中,我尝试将某些指标编码为分析的缺失值.有一个简单的解决方法吗?