楼主: 乌贼07
1674 5

[有偿编程] 请教,关于两个数据框对比并赋值的问题 [推广有奖]

  • 0关注
  • 9粉丝

已卖:299份资源

硕士生

56%

还不是VIP/贵宾

-

威望
0
论坛币
14381 个
通用积分
51.8460
学术水平
16 点
热心指数
24 点
信用等级
11 点
经验
2855 点
帖子
105
精华
0
在线时间
190 小时
注册时间
2009-4-9
最后登录
2023-8-22

楼主
乌贼07 发表于 2017-6-16 09:39:16 |AI写论文
20论坛币
> Name1
    Name value group
1  Apple     2     0
2 Banana     6     0
3    Car     7     0
4    Dog     9     0
5    Egg     5     0
6   Flag     2     0
7 Banana     4     0
8   Flag     6     0

> Name2
    Name
1   Flag
2 Banana

###############################
这里有2个dataframe变量,Name1和Name2,我想这样:

如果Name2中的属性Name值=Name1中的Name值,则令对应于Name1中的group列的值=1

初次学习R,感觉这个R的使用风格好怪呀。憋了半天没弄出来。


dataTest.rar (226 Bytes) 本附件包括:
  • Name1.csv
  • Name2.csv




关键词:数据框 Dataframe banana Group value

回帖推荐

cheetahfly 发表于6楼  查看完整内容

用上这两个包更加方便直观。

cheetahfly 发表于2楼  查看完整内容

Name1$group[Name1$Name %in% Name2$Name]

沙发
zhou1_20 发表于 2017-6-16 09:39:17
  1. Name1 <- data.frame(Name=c('App', 'Banana', 'Car', 'Dog', 'Egg', 'Flag', 'Banana', 'Flag'),
  2.                     value=c(2,6,7,9,5,2,4,6),group=rep(0,8),stringsAsFactors = F)
  3. Name2 <- data.frame(Name=c('Flag', 'Banana'),stringsAsFactors = F)

  4. Name1$group <- ifelse(Name1$Name%in%Name2$Name, 1, 0)
  5. Name1
复制代码
已有 1 人评分论坛币 收起 理由
jiangbeilu + 15 精彩帖子

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

藤椅
cheetahfly 在职认证  发表于 2017-6-16 10:44:11
Name1$group[Name1$Name %in% Name2$Name] <- 1

习惯就好。
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 精彩帖子

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

板凳
乌贼07 发表于 2017-6-16 11:56:38


> Name1
    Name value group datetime
1  Apple     2     0 2017/6/1
2 Banana     6     0 2017/6/1
3    Car     7     0 2017/6/2
4    Dog     9     0 2017/6/3
5    Egg     5     0 2017/6/4
6   Flag     2     0 2017/6/4
7 Banana     4     0 2017/6/5
8   Flag     6     0 2017/6/5

###############################

还有一个疑问,如果我引入了一列datetime变量,我怎么选中2017/06/01至2017/06/03之间的数据?
如果是sqldf package的话,应该是这样sqldf("select * from Name1 where datetime between 2017/06/01 and 2017/06/03")
如果是R的基础包呢?

报纸
乌贼07 发表于 2017-6-16 11:58:13
cheetahfly 发表于 2017-6-16 10:44
Name1$group[Name1$Name %in% Name2$Name]
> Name1
    Name value group datetime
1  Apple     2     0 2017/6/1
2 Banana     6     0 2017/6/1
3    Car     7     0 2017/6/2
4    Dog     9     0 2017/6/3
5    Egg     5     0 2017/6/4
6   Flag     2     0 2017/6/4
7 Banana     4     0 2017/6/5
8   Flag     6     0 2017/6/5

###############################

还有一个疑问,如果我引入了一列datetime变量,我怎么选中2017/06/01至2017/06/03之间的数据?
如果是sqldf package的话,应该是这样sqldf("select * from Name1 where datetime between 2017/06/01 and 2017/06/03")
如果是R的基础包呢?

地板
cheetahfly 在职认证  发表于 2017-6-16 17:07:01
乌贼07 发表于 2017-6-16 11:58
> Name1
    Name value group datetime
1  Apple     2     0 2017/6/1
  1. library(dplyr)
  2. library(lubridate)
  3. Name1 %>%
  4.   filter(between(datetime, ymd(20170601), ymd(20170603)))
复制代码
用上这两个包更加方便直观。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-17 14:48