6367 15

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

  • 8关注
  • 1粉丝

博士生

78%

还不是VIP/贵宾

-

威望
0
论坛币
436 个
通用积分
0.0602
学术水平
5 点
热心指数
5 点
信用等级
0 点
经验
4549 点
帖子
164
精华
0
在线时间
407 小时
注册时间
2015-11-3
最后登录
2020-2-8

楼主
露露的家园2012 发表于 2018-1-5 10:44:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
现在我有一个数据框hhmin,情况如下:
  1. > hhmin
  2.           x1      x2        x3       x4   x5       x6    x7       x8     x9     x10     y      yhat
  3. 1_min  19.19   6992   74.02   191.9   145.8   120.0  22.02   18.66    1.08   13.40   13.12   13.20  
  4. 2_min  20.09   6902   75.67   188.8   152.5     125     27.68   21.53   12.92   13.51   13.25   13.31  
  5. 3_min  20.09   6952   75.26   188.8   152.5     125     27.12   21.53   12.86   13.51   13.22   13.31  
  6. 4_min  17.70   6997   74.03   186.6   148.0     125     25.65   18.66   11.19   13.40   13.22   13.28  
  7. 5_min  20.09   6875   75.70   188.8   152.5     125     27.68   21.53   12.92   13.51   13.24   13.31  
  8. 6_min  19.72   6995   73.60   185.7   148.9     125     27.68   18.66   12.53   13.51   13.22   13.31  
  9. 7_min  18.82   6986   70.09   189.9   136.6     125     24.94   19.23    0.00   13.40   13.33   13.32  
  10. 8_min  19.67   6979   74.69   182.8   145.8     120     24.13   18.66   12.69   13.40   13.22   13.29  
  11. 9_min  20.09   6927   75.60   188.8   152.4     125     27.00   21.53   12.86   13.51   13.22   13.31  
  12. 10_min 19.61   6991   73.86   165.2   149.7     125   29.79   20.29   12.76   13.51   13.22   13.31  
  13. >
复制代码
同时还有一个新的数据框new_data,它只有一条记录,如下:
  1. > new_data
  2.       x1     x2      x3     x4     x5    x6    x7     x8       x9
  3. 1 19.03 7000 71.85 195.4 137.9 125 26.94 22.46 12.89
复制代码
我现在就是要在hhmin中选择与new_data中x6等于125一样的记录,删除掉hhmin中x6等于120 的记录。我是用subset函数,代码如下:
  1. subset(hhmin,x6=="new_data$x6",select = c(x1:x9))
复制代码
但是结果却是:
  1. > subset(hhmin,x6=="new_data$x6",select = c(x1:x9))
  2. [1] x1 x2 x3 x4 x5 x6 x7 x8 x9
  3. <0 行> (或0-长度的row.names)
复制代码
同时,我运行以下代码,却出现:
  1. > which(hhmax$x6=="new_data$x6")
  2. integer(0)
复制代码
  1. > hhmin$x6=="125"
  2. [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
复制代码


问题是:明明hhmin中有满足x6等于125 的记录,但是结果却是没有,这是有什么问题啊?麻烦帮我修改一下代码?谢谢!



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
雾锁山城 在职认证  发表于 2018-1-5 11:18:42
subset(hhmin,x6=="new_data$x6" (这里传入的是数值而不是字符串),select = c(x1:x9))
改为如下:
subset(hhmin,x6==new_data$x6,select = c(x1:x9))
已有 1 人评分经验 收起 理由
cheetahfly + 30 热心帮助其他会员

总评分: 经验 + 30   查看全部评分

藤椅
露露的家园2012 发表于 2018-1-5 11:20:21
雾锁山城 发表于 2018-1-5 11:18
subset(hhmin,x6=="new_data$x6" (这里传入的是数值而不是字符串),select = c(x1:x9))
改为如下:
subs ...
[code]> subset(hhmin,x6==new_data$x6,select = c(x1:x9))
[1] x1 x2 x3 x4 x5 x6 x7 x8 x9
<0 行> (或0-长度的row.names)

板凳
露露的家园2012 发表于 2018-1-5 11:21:27
雾锁山城 发表于 2018-1-5 11:18
subset(hhmin,x6=="new_data$x6" (这里传入的是数值而不是字符串),select = c(x1:x9))
改为如下:
subs ...
结果还是一样,并没有发生变化

报纸
露露的家园2012 发表于 2018-1-5 11:36:39
  1. > hhmin            x1     x2      x3      x4      x5      x6      x7      x8      x9     x10       y
  2. 1_min  19.19   6992   74.02   191.9   145.8   120.0   22.02   18.66    1.08   13.40   13.12  
  3. 2_min  20.09   6902   75.67   188.8   152.5     125   27.68   21.53   12.92   13.51   13.25  
  4. 3_min  20.09   6952   75.26   188.8   152.5     125   27.12   21.53   12.86   13.51   13.22  
  5. 4_min  17.70   6997   74.03   186.6   148.0     125   25.65   18.66   11.19   13.40   13.22  
  6. 5_min  20.09   6875   75.70   188.8   152.5     125   27.68   21.53   12.92   13.51   13.24  
  7. 6_min  19.72   6995   73.60   185.7   148.9     125   27.68   18.66   12.53   13.51   13.22  
  8. 7_min  18.82   6986   70.09   189.9   136.6     125   24.94   19.23    0.00   13.40   13.33  
  9. 8_min  19.67   6979   74.69   182.8   145.8     120   24.13   18.66   12.69   13.40   13.22  
  10. 9_min  20.09   6927   75.60   188.8   152.4     125   27.00   21.53   12.86   13.51   13.22  
  11. 10_min 19.61   6991   73.86   165.2   149.7     125   29.79   20.29   12.76   13.51   13.22
复制代码

地板
nuomin 发表于 2018-1-5 12:01:02
subset(data,x6==newdata["x6"])
已有 1 人评分经验 收起 理由
cheetahfly + 30 精彩帖子

总评分: 经验 + 30   查看全部评分

7
雾锁山城 在职认证  发表于 2018-1-5 13:18:18
露露的家园2012 发表于 2018-1-5 11:21
结果还是一样,并没有发生变化
可以的,例子如下
> data(iris)
> newdata=iris[1,]
> newdata
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
> subset(iris,Species==newdata$Species)
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa
11          5.4         3.7          1.5         0.2  setosa
已有 2 人评分经验 论坛币 收起 理由
cheetahfly + 30 热心帮助其他会员
jiangbeilu + 5 精彩帖子

总评分: 经验 + 30  论坛币 + 5   查看全部评分

8
露露的家园2012 发表于 2018-1-5 15:04:12
雾锁山城 发表于 2018-1-5 13:18
可以的,例子如下
> data(iris)
> newdata=iris[1,]
你的这个例子没错,是对的,但是用到我的那个data.frame,就是运行不下去,出现
  1. subset(hhmin,x6==new_data$x6)
  2. [1] x1   x2   x3   x4   x5   x6   x7   x8   x9   x10  y    yhat
  3. <0 行> (或0-长度的row.names)
复制代码

9
露露的家园2012 发表于 2018-1-5 15:05:29
nuomin 发表于 2018-1-5 12:01
subset(data,x6==newdata["x6"])
运行,出现如下报错
  1. > subset(hhmin,x6==new_data["x6"])
  2. Error in x6 == new_data["x6"] :
  3.   comparison of these types is not implemented
  4. In addition: Warning message:
  5. In eval(e, x, parent.frame()) :
  6.   Incompatible methods ("Ops.factor", "Ops.data.frame") for "=="
  7. >
复制代码

10
雾锁山城 在职认证  发表于 2018-1-5 15:59:08
露露的家园2012 发表于 2018-1-5 15:04
你的这个例子没错,是对的,但是用到我的那个data.frame,就是运行不下去,出现
> 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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 08:54