首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用条件语句的算术运算

使用条件语句的算术运算
EN

Stack Overflow用户
提问于 2021-11-18 10:05:38
回答 1查看 30关注 0票数 1

如果满足两个条件,我需要编写一个函数将一列除以矩阵的一个元素。这两个条件也会随着矩阵元素的变化而变化。

代码语言:javascript
运行
复制
foo <- c('A', 'B', 'C', 'D', 'F', 'G')
phi <- c('Z1', 'Z1', 'X3', 'W4', 'V5', 'W4')
tal <- c('1-2', '3-4', '5-6', '7-8', '9-10', '11-12')
n <- c(324, 872, 163, 953, 453, 943)
df <- data.frame(foo, phi, tal, n)

mtx <- c(5983, 4079, 4253, 3516, 3452, 2519, 10079, 3083, 1998, 3115, 3545, 327790, 6847, 2583, 2193, 2221, 3557, 5031, 866, 3685, 3452, 2519, 10079, 3083, 1998)
mtx <- matrix(mtx, 6, 6, dimnames = list(c('Z1', 'Y2', 'X3', 'W4', 'V5', 'U6'), c('1-2', '3-4', '5-6', '7-8', '9-10', '11-12')))

我需要写这样的代码:

代码语言:javascript
运行
复制
df$P <- ifelse(df$phi=="Z1" & df$tal == "1-2", df$n/mtx[1,1],
     df$phi=="Z1" & df$tal == "3-4", df$n/mtx[1,2],
     df$phi=="Y2" & df$tal == "1-2", df$n/mtx[2,1])

我知道ifelse函数本身不足以获得我需要的东西。有没有人能找到解决方案?非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-18 10:19:27

在LHS和RHS上使用within和相同的子集。

代码语言:javascript
运行
复制
df <- within(df, {
  P <- NA
  P[phi == "Z1" & tal == "1-2"] <- n[phi == "Z1" & tal == "1-2"]/mtx[1, 1]
  P[phi == "Z1" & tal == "3-4"] <- n[phi == "Z1" & tal == "3-4"]/mtx[1, 2]
  P[phi == "Y2" & tal == "1-2"] <- n[phi == "Y2" & tal == "1-2"]/mtx[2, 1]
})
df
#   foo phi   tal   n          P
# 1   A  Z1   1-2 324 0.05415343
# 2   B  Z1   3-4 872 0.14574628
# 3   C  X3   5-6 163         NA
# 4   D  W4   7-8 953         NA
# 5   F  V5  9-10 453         NA
# 6   G  W4 11-12 943         NA
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70017897

复制
相关文章

相似问题

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