4991 15

[问答] 使用subset函数的问题!! [推广有奖]

11
雾锁山城 在职认证  发表于 2018-1-5 16:00:39 |只看作者 |坛友微信交流群
雾锁山城 发表于 2018-1-5 13:18
可以的,例子如下
> data(iris)
> newdata=iris[1,]
> head(hhmin)
     x1   x2    x3    x4    x5  x6    x7    x8    x9   x10     y
1 19.19 6992 74.02 191.9 145.8 120 22.02 18.66  1.08 13.40 13.12
2 20.09 6902 75.67 188.8 152.5 125 27.68 21.53 12.92 13.51 13.25
3 20.09 6952 75.26 188.8 152.5 125 27.12 21.53 12.86 13.51 13.22
4 17.70 6997 74.03 186.6 148.0 125 25.65 18.66 11.19 13.40 13.22
5 20.09 6875 75.70 188.8 152.5 125 27.68 21.53 12.92 13.51 13.24
6 19.72 6995 73.60 185.7 148.9 125 27.68 18.66 12.53 13.51 13.22
> new_data=data.frame(x1=19.03,x2=7000,x3=71.83,x4=195,x5=137,x6=125,x7=22,x8=195)
> new_data
     x1   x2    x3  x4  x5  x6 x7  x8
1 19.03 7000 71.83 195 137 125 22 195
> subset(hhmin,x6=new_data$x6)
      x1   x2    x3    x4    x5  x6    x7    x8    x9   x10     y
1  19.19 6992 74.02 191.9 145.8 120 22.02 18.66  1.08 13.40 13.12
2  20.09 6902 75.67 188.8 152.5 125 27.68 21.53 12.92 13.51 13.25
3  20.09 6952 75.26 188.8 152.5 125 27.12 21.53 12.86 13.51 13.22
4  17.70 6997 74.03 186.6 148.0 125 25.65 18.66 11.19 13.40 13.22
5  20.09 6875 75.70 188.8 152.5 125 27.68 21.53 12.92 13.51 13.24
6  19.72 6995 73.60 185.7 148.9 125 27.68 18.66 12.53 13.51 13.22
7  18.82 6986 70.09 189.9 136.6 125 24.94 19.23  0.00 13.40 13.33
8  19.67 6979 74.69 182.8 145.8 120 24.13 18.66 12.69 13.40 13.22
9  20.09 6927 75.60 188.8 152.4 125 27.00 21.53 12.86 13.51 13.22
10 19.61 6991 73.86 165.2 149.7 125 29.79 20.29 12.76 13.51 13.22
> subset(hhmin,x6=new_data$x6,select = c(x1:x9))
      x1   x2    x3    x4    x5  x6    x7    x8    x9
1  19.19 6992 74.02 191.9 145.8 120 22.02 18.66  1.08
2  20.09 6902 75.67 188.8 152.5 125 27.68 21.53 12.92
3  20.09 6952 75.26 188.8 152.5 125 27.12 21.53 12.86
4  17.70 6997 74.03 186.6 148.0 125 25.65 18.66 11.19
5  20.09 6875 75.70 188.8 152.5 125 27.68 21.53 12.92
6  19.72 6995 73.60 185.7 148.9 125 27.68 18.66 12.53
7  18.82 6986 70.09 189.9 136.6 125 24.94 19.23  0.00
8  19.67 6979 74.69 182.8 145.8 120 24.13 18.66 12.69
9  20.09 6927 75.60 188.8 152.4 125 27.00 21.53 12.86
10 19.61 6991 73.86 165.2 149.7 125 29.79 20.29 12.76

使用道具

12
雾锁山城 在职认证  发表于 2018-1-5 16:04:29 |只看作者 |坛友微信交流群
露露的家园2012 发表于 2018-1-5 15:04
你的这个例子没错,是对的,但是用到我的那个data.frame,就是运行不下去,出现
这些处理都是data.frame,这时候你可以先确定 newdata$x6 是否有值,数据类型是什么,如果数据类型是一样的,是不会出错

使用道具

13
雾锁山城 在职认证  发表于 2018-1-5 16:05:45 |只看作者 |坛友微信交流群
雾锁山城 发表于 2018-1-5 16:04
这些处理都是data.frame,这时候你可以先确定 newdata$x6 是否有值,数据类型是什么,如果数据类型是一样的 ...
> head(hhmin)
     x1   x2    x3    x4    x5  x6    x7    x8    x9   x10     y
1 19.19 6992 74.02 191.9 145.8 120 22.02 18.66  1.08 13.40 13.12
2 20.09 6902 75.67 188.8 152.5 125 27.68 21.53 12.92 13.51 13.25
3 20.09 6952 75.26 188.8 152.5 125 27.12 21.53 12.86 13.51 13.22
4 17.70 6997 74.03 186.6 148.0 125 25.65 18.66 11.19 13.40 13.22
5 20.09 6875 75.70 188.8 152.5 125 27.68 21.53 12.92 13.51 13.24
6 19.72 6995 73.60 185.7 148.9 125 27.68 18.66 12.53 13.51 13.22
> new_data=hhmin[2,]
> subset(hhmin,x6==new_data$x6,select = c(x1:x9))
      x1   x2    x3    x4    x5  x6    x7    x8    x9
2  20.09 6902 75.67 188.8 152.5 125 27.68 21.53 12.92
3  20.09 6952 75.26 188.8 152.5 125 27.12 21.53 12.86
4  17.70 6997 74.03 186.6 148.0 125 25.65 18.66 11.19
5  20.09 6875 75.70 188.8 152.5 125 27.68 21.53 12.92
6  19.72 6995 73.60 185.7 148.9 125 27.68 18.66 12.53
7  18.82 6986 70.09 189.9 136.6 125 24.94 19.23  0.00
9  20.09 6927 75.60 188.8 152.4 125 27.00 21.53 12.86
10 19.61 6991 73.86 165.2 149.7 125 29.79 20.29 12.76

使用道具

14
雾锁山城 在职认证  发表于 2018-1-5 16:05:46 |只看作者 |坛友微信交流群
雾锁山城 发表于 2018-1-5 16:04
这些处理都是data.frame,这时候你可以先确定 newdata$x6 是否有值,数据类型是什么,如果数据类型是一样的 ...
> head(hhmin)
     x1   x2    x3    x4    x5  x6    x7    x8    x9   x10     y
1 19.19 6992 74.02 191.9 145.8 120 22.02 18.66  1.08 13.40 13.12
2 20.09 6902 75.67 188.8 152.5 125 27.68 21.53 12.92 13.51 13.25
3 20.09 6952 75.26 188.8 152.5 125 27.12 21.53 12.86 13.51 13.22
4 17.70 6997 74.03 186.6 148.0 125 25.65 18.66 11.19 13.40 13.22
5 20.09 6875 75.70 188.8 152.5 125 27.68 21.53 12.92 13.51 13.24
6 19.72 6995 73.60 185.7 148.9 125 27.68 18.66 12.53 13.51 13.22
> new_data=hhmin[2,]
> subset(hhmin,x6==new_data$x6,select = c(x1:x9))
      x1   x2    x3    x4    x5  x6    x7    x8    x9
2  20.09 6902 75.67 188.8 152.5 125 27.68 21.53 12.92
3  20.09 6952 75.26 188.8 152.5 125 27.12 21.53 12.86
4  17.70 6997 74.03 186.6 148.0 125 25.65 18.66 11.19
5  20.09 6875 75.70 188.8 152.5 125 27.68 21.53 12.92
6  19.72 6995 73.60 185.7 148.9 125 27.68 18.66 12.53
7  18.82 6986 70.09 189.9 136.6 125 24.94 19.23  0.00
9  20.09 6927 75.60 188.8 152.4 125 27.00 21.53 12.86
10 19.61 6991 73.86 165.2 149.7 125 29.79 20.29 12.76

使用道具

雾锁山城 发表于 2018-1-5 16:04
这些处理都是data.frame,这时候你可以先确定 newdata$x6 是否有值,数据类型是什么,如果数据类型是一样的 ...
这个函数的使用方法并没有错,而是数据类型不一致导致的。hhmin是字符型,而new_data是数值型,所以出现结果为0 的情况,这个问题解决后,结果运行就已经不存在问题了。谢谢你的热心解答!感谢!

使用道具

借楼问一下subset函数是否可以
birth<-subset(birthwt,self_disease_state=="normal"|"cancer")
在筛选的条件与|连用。就可以一次筛选出两种符合条件的。我试了一下,失败了。所以过来求问。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-21 10:30