楼主: 万木青
2266 8

[问答] R语言数据框筛选的疑点,同样的方法有的可行,有的则不行。求解! [推广有奖]

  • 4关注
  • 1粉丝

博士生

8%

还不是VIP/贵宾

-

威望
0
论坛币
2876 个
通用积分
5.6096
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
2168 点
帖子
136
精华
0
在线时间
195 小时
注册时间
2014-10-20
最后登录
2021-4-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
这种语法可能不符合R的规则,但是为何一个可以成功筛选出,另一个则不行?有人对这方面有研究的?发表一下看法
下面内容为试验时的两个例子:
> cc
  ccc bb lulu
1   a  1    8
2   b  2    9
3   c  3   10
> list(c('b','c'))
[[1]]
[1] "b" "c"

> cc[cc[1]==list(c('b','c')),]
[1] ccc  bb   lulu                -------------此句输出仅输出列名
<0 行> (或0-长度的row.names)
Warning messages:
1: In is.na(e1) | is.na(e2) :
  longer object length is not a multiple of shorter object length
2: In `==.default`(left, right) :
  longer object length is not a multiple of shorter object length


> rs[2]
[[1]]
[1] "37917" "25405"

> dcaptb2[dcaptb2[1]==rs[2],] #--虽然后面有提醒,但还是顺利输出
    会员ID 冻肉 罐装肉 罐装蔬菜 牛奶 啤酒 葡萄酒 蔬菜水果 甜食 鲜肉 饮料 鱼
244  25405    0      1        0    0    0      0        0    0    0    0  2
369  37917    0      0        0    0    0      2        1    1    2    0  0
Warning message:
In FUN(left, right) :
  longer object length is not a multiple of shorter object length



二维码

扫码加我 拉你入群

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

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

关键词:蔬菜水果 不符合 葡萄酒

沙发
万木青 发表于 2018-11-24 15:02:46 |只看作者 |坛友微信交流群
标准写法应该是 with(dcaptb2,dcaptb2[会员ID=="37917"|会员ID=="25405",])# 标准写法,但上面的
dcaptb2[dcaptb2[1]==rs[2],]却行得通,不解!

使用道具

藤椅
Whig 在职认证  发表于 2018-11-24 15:44:53 |只看作者 |坛友微信交流群
你给的信息还不是很全,我感觉你第二个例子好像不是data.frame。另外,像多值筛选一般用%in%吧

使用道具

板凳
万木青 发表于 2018-11-24 16:17:11 |只看作者 |坛友微信交流群
Whig 发表于 2018-11-24 15:44
你给的信息还不是很全,我感觉你第二个例子好像不是data.frame。另外,像多值筛选一般用%in%吧
str(dcaptb2)
'data.frame':        939 obs. of  12 variables:
$ 会员ID  : chr  "100047" "100255" "100256" "100328" ...
$ 冻肉    : num  0 0 1 1 0 0 1 1 1 1 ...
$ 罐装肉  : num  0 0 0 0 0 0 0 1 0 0 ...
$ 罐装蔬菜: num  1 0 1 1 1 1 1 1 1 1 ...
$ 牛奶    : num  0 0 0 0 0 0 0 0 0 0 ...
$ 啤酒    : num  0 0 1 1 0 0 0 1 1 1 ...
$ 葡萄酒  : num  0 1 1 0 0 1 0 0 0 1 ...
$ 蔬菜水果: num  1 0 0 0 1 1 1 0 0 0 ...
$ 甜食    : num  0 0 0 0 1 0 0 0 0 0 ...
$ 鲜肉    : num  0 0 0 1 0 0 0 0 0 0 ...
$ 饮料    : num  0 0 0 0 0 1 0 0 0 0 ...
$ 鱼      : num  1 0 0 1 1 0 1 0 0 0 ...

使用道具

报纸
Whig 在职认证  发表于 2018-11-24 16:44:04 |只看作者 |坛友微信交流群
我试了下,这样做有问题,当数据类型不一样,得到的结果似乎也不一样,而且我的没报错报警告。建议不要这么做
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

地板
rosenbloog 发表于 2018-11-25 10:44:53 |只看作者 |坛友微信交流群
字符型建议不用==,可以试试:%in%。

使用道具

7
万木青 发表于 2018-11-25 11:23:09 |只看作者 |坛友微信交流群
rosenbloog 发表于 2018-11-25 10:44
字符型建议不用==,可以试试:%in%。
用%in%则两个列都执行不了

使用道具

8
jgchen1966 发表于 2018-11-25 22:53:54 |只看作者 |坛友微信交流群
桔子与苹果,进行比较,电脑好象被傻了!!!

使用道具

9
rosenbloog 发表于 2018-11-25 23:12:55 |只看作者 |坛友微信交流群
万木青 发表于 2018-11-25 11:23
用%in%则两个列都执行不了
那你要给可以复制出你问题的数据和code才行

使用道具

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

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

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

GMT+8, 2024-10-6 14:31