全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
18503 7
2016-07-23

例如:airquality中的前四行。

Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4

现在需要进行的数据变换是第一行数据所有列的数据了除以41,第二行除以36,第三行除以12,第四行除以18,得到一个新的数据框。
我知道搞一个循环很容易实现。
请问有没有现成的函数或包具有这个功能。


二维码

扫码加我 拉你入群

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

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

全部回复
2016-7-23 19:53:30
复制代码


这个也许行
二维码

扫码加我 拉你入群

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

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

2016-7-23 19:56:19
复制代码


还得有个转置!
二维码

扫码加我 拉你入群

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

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

2016-7-23 21:12:01
bbslover 发表于 2016-7-23 19:56
还得有个转置!
果然可以,多谢高手
二维码

扫码加我 拉你入群

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

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

2016-7-23 21:14:42
bbslover 发表于 2016-7-23 19:56
还得有个转置!
赞,原来还需要转置
二维码

扫码加我 拉你入群

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

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

2016-7-24 08:52:22
补充一下:
一般来说,不管是dataframe还是matrix,如果行数远大于列数,用按列apply会稍快一点:
datNormed <- apply(dat, 2, function(x) x /dat[, 1])

如果要经常重复这一过程,原数据若是dataframe,用lapply会快很多:
dat[] <- lapply(dat, function(x) x/dat[[1]])     
或者:
datNormed <- as.data.frame(lapply(dat, function(x) x/dat[[1]]))

如果要经常重复这一过程,原数据若是matrix,就更直接了:
datNormed <- dat/dat[, 1]
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群