Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 缺失值问题_R_Missing Data_Imputation - Fatal编程技术网

R 缺失值问题

R 缺失值问题,r,missing-data,imputation,R,Missing Data,Imputation,我有一个数据集(data1.csv),其中包含一些缺失的数据(随机缺失),我正在从该数据集(d1)创建一个子集,以便在d2中只保留完整的观察结果。我正在使用ftable,as.data.frame函数,并创建一列p,表示每个组合的百分比 d1 = read.csv("C:/Users/....../Data1.csv",header=T) y x1 x2 x3 1 1 2 1 NA 2 0 2 NA 0 3 1 NA 1 1 4 0 3 1 0 5 0 2

我有一个数据集(data1.csv),其中包含一些缺失的数据(随机缺失),我正在从该数据集(d1)创建一个子集,以便在d2中只保留完整的观察结果。我正在使用ftableas.data.frame函数,并创建一列p,表示每个组合的百分比

 d1 = read.csv("C:/Users/....../Data1.csv",header=T)

   y x1 x2 x3
1  1  2  1 NA
2  0  2 NA  0
3  1 NA  1  1
4  0  3  1  0
5  0  2  0 NA
6  0  1  0  1
7  1 NA NA  1
8  1  3  0  1
9  1  2  0  0
10 0  3  0 NA
11 1 NA  0  1
12 1  3 NA  1
13 0  3  1 NA
14 0 NA  1  0
15 1  1  0 NA
16 0  1 NA  1
17 1 NA  0 NA
18 0  3  1  1
19 0  1 NA  0
20 0 NA  0  1

 d2= d1[complete.cases(d1),]
 d2

   y x1 x2 x3
4  0  3  1  0
6  0  1  0  1
8  1  3  0  1
9  1  2  0  0
18 0  3  1  1


 d3= ftable(d2)
 d4=as.data.frame(d3)
 d4


 y x1 x2 x3 Freq   p
 1  0  1  0  0    0 0.0
 2  1  1  0  0    0 0.0
 3  0  2  0  0    0 0.0
 4  1  2  0  0    1 0.2
 5  0  3  0  0    0 0.0
 6  1  3  0  0    0 0.0
 7  0  1  1  0    0 0.0
 8  1  1  1  0    0 0.0
 9  0  2  1  0    0 0.0
 10 1  2  1  0    0 0.0
 11 0  3  1  0    1 0.2
 12 1  3  1  0    0 0.0
 13 0  1  0  1    1 0.2
 14 1  1  0  1    0 0.0
 15 0  2  0  1    0 0.0
 16 1  2  0  1    0 0.0
 17 0  3  0  1    0 0.0
 18 1  3  0  1    1 0.2
 19 0  1  1  1    0 0.0
 20 1  1  1  1    0 0.0
 21 0  2  1  1    0 0.0
 22 1  2  1  1    0 0.0
 23 0  3  1  1    1 0.2
 24 1  3  1  1    0 0.0
函数ftableas.data.frame运行良好,但问题是我仍然在结果(d4)中看到了所有这些观察结果,这是有意义的。当我完成时,我想我已经摆脱了这个。案例(d1)

所以,我们需要帮助消除缺失值,并只为这些完整的观测值编制频率表

   y x1 x2 x3
4  0  3  1  0
6  0  1  0  1
8  1  3  0  1
9  1  2  0  0
18 0  3  1  1

查找?完成.cases()。它会满足你的需求;您可以指定缺少的值以及要为哪些列执行此操作

您可以对输入数据进行采样

d1<-structure(list(y = c(1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
1L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L), x1 = c(2L, 2L, NA, 3L, 
2L, 1L, NA, 3L, 2L, 3L, NA, 3L, 3L, NA, 1L, 1L, NA, 3L, 1L, NA
), x2 = c(1L, NA, 1L, 1L, 0L, 0L, NA, 0L, 0L, 0L, 0L, NA, 1L, 
1L, 0L, NA, 0L, 1L, NA, 0L), x3 = c(NA, 0L, 1L, 0L, NA, 1L, 1L, 
1L, 0L, NA, 1L, 1L, NA, 0L, NA, 1L, NA, 1L, 0L, 1L)), .Names = c("y", 
"x1", "x2", "x3"), class = "data.frame", row.names = c("1", "2", 
"3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", 
"15", "16", "17", "18", "19", "20"))
没有完全相同的原始行。在您的完整案例中,这些都是
y
x1
x2
x3
的可能组合。如果你只想要那些真正有观察结果的,你可以这样做

 subset(d4, Freq>0)
但这基本上会让你回到
d2

4  1  2  0  0    1
11 0  3  1  0    1
13 0  1  0  1    1
18 1  3  0  1    1
23 0  3  1  1    1

似乎不清楚您期望
ftable
做什么,或者您期望结果与
d2
有什么不同,或者您的
p
列来自何处。代码的工作方式完全符合我的预期,因此我不确定您认为结果会是什么。

issing值是否可以称为“.”(尾随空格)还是其他一些语法恐惧?顺便说一句,您还可以使用
na.strings
参数将一组可能缺失的值符号交给
read.csv
。请提供一个小的数据示例。谢谢Flick先生,看起来我没有考虑到这一点,我希望ftable和as.data.frame函数只获取4个完整的观察值,因为我已经在那里进行了筛选…无论如何,现在这是清楚的…再次感谢。
 subset(d4, Freq>0)
4  1  2  0  0    1
11 0  3  1  0    1
13 0  1  0  1    1
18 1  3  0  1    1
23 0  3  1  1    1