首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将所有行从同一数据帧乘以另一行。

将所有行从同一数据帧乘以另一行。
EN

Stack Overflow用户
提问于 2019-01-07 01:44:48
回答 1查看 292关注 0票数 0

数据

我有一个与下面的虚拟数据集类似的数据集。

代码语言:javascript
运行
复制
library(dplyr)
set.seed(111)
data <- tibble(ID = sort(sample(LETTERS, 10, F)),
                A = round(rnorm(10, 4, 1), 1),
                B = sample(0:20, 10, F),
                C = rep(c(33, 9), each = 5))
data <- rbind(data, c("ratio", 0.7, 0.25, 0.05))

问题

我想要生成一个新的dataframe,其中每一行乘以名为ratio的行(不包括带有ID的第一列)。然后,可以从输出表中删除比率行。

在dplyr中有一种简单的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-07 02:04:00

dplyr更适合于按列操作,而不是像这样按行操作。但是在R基中这样做是非常简单的:

代码语言:javascript
运行
复制
library(dplyr)
set.seed(111)
data <- tibble(ID = sort(sample(LETTERS, 10, F)),
               A = round(rnorm(10, 4, 1), 1),
               B = sample(0:20, 10, F),
               C = rep(c(33, 9), each = 5))

ratio <- data.frame(A = 0.7, B = 0.25, C = 0.05) # your mutliplier
ratio <- ratio[rep(1, nrow(data)),] # replicated to match size of 'data'
data[2:4] <- data[2:4] * ratio # multiply

   ID        A     B     C
   <chr> <dbl> <dbl> <dbl>
 1 A      2.87  0.25  1.65
 2 B      1.75  2.5   1.65
 3 H      2.10  2     1.65
 4 I      2.17  4.5   1.65
 5 K      2.45  1.5   1.65
 6 L      2.66  2.75  0.45
 7 P      2.52  5     0.45
 8 S      4.06  4.75  0.45
 9 V      3.08  4.25  0.45
10 X      3.36  2.25  0.45

或者,您可以避免通过使用Map复制“比率”数据框架来匹配主数据集的大小。

代码语言:javascript
运行
复制
ratio <- data.frame(A = 0.7, B = 0.25, C = 0.05)  
data[2:4] <- Map('*', data[2:4], ratio)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54067655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档