楼主: 骨奶啦
1864 11

[问答] 分组处理数据求助 [推广有奖]

  • 0关注
  • 0粉丝

本科生

77%

还不是VIP/贵宾

-

威望
0
论坛币
3906 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
162 点
帖子
5
精华
0
在线时间
226 小时
注册时间
2016-4-1
最后登录
2020-2-26

楼主
骨奶啦 发表于 2017-10-12 21:54:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
已有数据A:
gene     sample       weight
a             1             0.5

a             1             0.6

a             2             0.4
a             2             0.5
a             3             0.5
b             1             0.4
b             1             0.3
b             2             0.5
b             2             0.6
b             3             0.6
数据B:
sample   1        2        3
weight   0.5    0.6     0.7

目标:把数据A中的weight,减去数据B中对应Sample的weight,求问不提取或拆分A的情况下如何操作?




二维码

扫码加我 拉你入群

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

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

关键词:处理数据 数据求助 Weight Sample weigh

沙发
屋檐滴语 发表于 2017-10-12 22:55:32
left_join()配合transmute()很容易解决。
  1. library(dplyr)
  2. left_join(A,B,by="sample") %>%
  3.         transmute(gene=gene,
  4.                    sample=sample,
  5.                    weight=weight.x-weight.y)
复制代码


已有 2 人评分论坛币 收起 理由
骨奶啦 + 5 精彩帖子
jiangbeilu + 5 精彩帖子

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

藤椅
jiangbeilu 学生认证  发表于 2017-10-13 08:49:47
屋檐滴语 发表于 2017-10-12 22:55
left_join()配合transmute()很容易解决。
这里有sample是rownames,应该要转成data.frame才可以用你的方法解决吧

板凳
jameschin007 发表于 2017-10-13 09:31:52
用sqldf 包
select  A.gene   ,  A.sample   , (A.weight-B.Weight) as adjusted_weigh from A left join B on A.sample = B.sample


假设 B    已经 转化为  列 为

sample ,weight
   1           0.5
  2            0.6
   3           0.7
已有 1 人评分论坛币 收起 理由
骨奶啦 + 5 精彩帖子

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

报纸
屋檐滴语 发表于 2017-10-13 10:47:51
jiangbeilu 发表于 2017-10-13 08:49
这里有sample是rownames,应该要转成data.frame才可以用你的方法解决吧
是的,我直接是令B=data.frame(sampel=c(1,2,3),weight=c(0.5,0.6,0.7))
如果sample和weight是行名,那么1,2,3是以数字开头的,没法做为列名。
已有 1 人评分论坛币 收起 理由
jiangbeilu + 5 精彩帖子

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

地板
jiangbeilu 学生认证  发表于 2017-10-13 23:10:11
屋檐滴语 发表于 2017-10-13 10:47
是的,我直接是令B=data.frame(sampel=c(1,2,3),weight=c(0.5,0.6,0.7))
如果sample和weight是行名,那么 ...
那是可以

7
骨奶啦 发表于 2017-10-18 16:56:58
屋檐滴语 发表于 2017-10-12 22:55
left_join()配合transmute()很容易解决。
谢谢!试了一下,我的sample名实际上是1,2,3,4,CK,结果中只有CK匹配上了,可能是什么原因呢?

8
saly@123 发表于 2018-5-2 11:37:02
jameschin007 发表于 2017-10-13 09:31
用sqldf 包
select  A.gene   ,  A.sample   , (A.weight-B.Weight) as adjusted_weigh from A left join  ...
你好,我想问下,R中使用Update进行数据修改的时候,语法跟SQL的有区别吗?我按照SQL里面的语法写的,如下:
Data1=sqldf('update Data set mean_data.Item_Weight=Data.Item_Weight where Data.Item_Identifier=mean_data.Item_Identifier and Data.Item_Weight=""')

出现错误:Error in rsqlite_send_query(conn@ptr, statement) : near ".": syntax error

9
jameschin007 发表于 2018-5-2 11:47:12
saly@123 发表于 2018-5-2 11:37
你好,我想问下,R中使用Update进行数据修改的时候,语法跟SQL的有区别吗?我按照SQL里面的语法写的,如下 ...
sqldf 只支持 select 语句。
如果用update, 建议用Rodbc包, 把dataframe 直接写到数据库表里,然后用sqlquery  做update语句

10
saly@123 发表于 2018-5-2 14:33:12
jameschin007 发表于 2018-5-2 11:47
sqldf 只支持 select 语句。
如果用update, 建议用Rodbc包, 把dataframe 直接写到数据库表里,然后用s ...
好的,谢谢您的解答。除了用Rodbc包之外,还有其他的方法可以修改特定的数据吗?

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

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