- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每次使用 mutate_at
使用前一列时,我如何改变包含模式( dplyr
我猜)的所有列?
--> 这里例如所有列继续 foo
在他们的名字中应该使用前面的列进行变异(即 a
代表 fooa
列, b
代表 foob
等等)。
set.seed(13)
dfrows = 5
df = data.frame(a = rnorm(dfrows),
fooa = runif(dfrows),
b = rnorm(dfrows, mean=50, sd=5),
foob = runif(dfrows, min=0, max=5),
c = rnorm(dfrows, mean=100, sd=10),
fooc = runif(dfrows, min=0, max=10))
df
# a fooa b foob c fooc
# 1 0.5543269 0.6611216 48.26791 3.0999527 98.06053 6.035485
# 2 -0.2802719 0.8783709 51.15647 0.1586242 113.96432 2.299504
# 3 1.7751634 0.8905590 52.34582 2.3070636 101.00663 9.668332
# 4 0.1873201 0.5662805 50.58978 1.6501046 98.85561 6.045547
# 5 1.1425261 0.5935473 50.35224 3.1676038 107.02225 6.396047
library(dplyr)
df %>% mutate(fooa = fooa/100 * a,
foob = foob/100 * b,
fooc = fooc/100 * c)
# a fooa b foob c fooc
# 1 0.5543269 0.003664775 48.26791 1.49628246 98.06053 5.918428
# 2 -0.2802719 -0.002461827 51.15647 0.08114656 113.96432 2.620614
# 3 1.7751634 0.015808878 52.34582 1.20765132 101.00663 9.765657
# 4 0.1873201 0.001060757 50.58978 0.83478430 98.85561 5.976363
# 5 1.1425261 0.006781434 50.35224 1.59495949 107.02225 6.845194
# Equivalently, in base R:
for (i in c(2, 4, 6)) {
df[,i] = df[,i]/100 * df[, i-1]
}
所以我正在寻找这样的东西,我猜:
# What should <PREVIOUS_COLUMN> be?
df %>% mutate_at(vars(contains('foo')), funs(./100 * <PREVIOUS_COLUMN>))
# OR, even better (more generic but in my case it will always be the previous column):
df %>% mutate_at(vars(contains('foo')), funs(./100 * <COLUMN_NAME_WITH_'foo'_PATTERN_REMOVED>))
data.frame
可能包含更多的列,可能具有不同于
X then fooX
的其他模式,以便理想的解决方案应该能够正确定位它们(但我会保留它,因为所有答案都提供了很好的解决方案和功能)。
set.seed(13)
dfrows = 5
df = data.frame(a = rnorm(dfrows),
fooa = runif(dfrows),
b = rnorm(dfrows, mean=50, sd=5),
foob = runif(dfrows, min=0, max=5),
bla = 5,
c = rnorm(dfrows, mean=100, sd=10),
fooc = runif(dfrows, min=0, max=10),
blo = 8)
df
# a fooa b foob bla c fooc blo
# 1 0.5543269 0.6611216 48.26791 3.0999527 5 98.06053 6.035485 8
# 2 -0.2802719 0.8783709 51.15647 0.1586242 5 113.96432 2.299504 8
# 3 1.7751634 0.8905590 52.34582 2.3070636 5 101.00663 9.668332 8
# 4 0.1873201 0.5662805 50.58978 1.6501046 5 98.85561 6.045547 8
# 5 1.1425261 0.5935473 50.35224 3.1676038 5 107.02225 6.396047 8
最佳答案
这是使用 across()
的另一种方法和 cur_column()
.我个人不建议根据列的位置进行计算,而是建议使用列名称,因为这看起来更安全。
在下面的示例中,我们遍历列 a
, b
和 c
与 across
并访问每个对应的值 foo
列使用 get()
和 cur_column
.
set.seed(13)
dfrows = 5
df = data.frame(a = rnorm(dfrows),
fooa = runif(dfrows),
b = rnorm(dfrows, mean=50, sd=5),
foob = runif(dfrows, min=0, max=5),
c = rnorm(dfrows, mean=100, sd=10),
fooc = runif(dfrows, min=0, max=10))
library(dplyr)
df %>%
mutate(across(matches("^[a-z]$"),
~ get(paste0("foo", cur_column())) / 100 * .x,
.names = "foo{col}"))
#> a fooa b foob c fooc
#> 1 0.5543269 0.003664775 48.26791 1.49628246 98.06053 5.918428
#> 2 -0.2802719 -0.002461827 51.15647 0.08114656 113.96432 2.620614
#> 3 1.7751634 0.015808878 52.34582 1.20765132 101.00663 9.765657
#> 4 0.1873201 0.001060757 50.58978 0.83478430 98.85561 5.976363
#> 5 1.1425261 0.006781434 50.35224 1.59495949 107.02225 6.845194
创建于 2021-01-27 由
reprex package (v0.3.0)
关于r - 每次根据前一列对匹配模式的所有列进行变异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65915885/
对此感到疯狂,真的缺少一些东西。 我有webpack 4.6.0,webpack-cli ^ 2.1.2,所以是最新的。 在文档(https://webpack.js.org/concepts/mod
object Host "os.google.com" { import "windows" address = "linux.google.com" groups = ["linux"] } obj
每当我安装我的应用程序时,我都可以将数据库从 Assets 文件夹复制到 /data/data/packagename/databases/ .到此为止,应用程序工作得很好。 但 10 或 15 秒后
我在 cc 模式缓冲区中使用 hideshow.el 来折叠我不查看的文件部分。 如果能够在 XML 文档中做到这一点就好了。我使用 emacs 22.2.1 和内置的 sgml-mode 进行 xm
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
根据java: public Scanner useDelimiter(String pattern) Sets this scanner's delimiting pattern to a patt
我读过一些关于 PRG 模式以及它如何防止用户重新提交表单的文章。比如this post有一张不错的图: 我能理解为什么在收到 2xx 后用户刷新页面时不会发生表单提交。但我仍然想知道: (1) 如果
看看下面的图片,您可能会清楚地看到这一点。 那么如何在带有其他一些 View 的简单屏幕中实现没有任何弹出/对话框/模式的微调器日期选择器? 我在整个网络上进行了谷歌搜索,但没有找到与之相关的任何合适
我不知道该怎么做,我一直遇到问题。 以下是代码: rows = int(input()) for i in range(1,rows): for j in range(1,i+1):
我想为重写创建一个正则表达式。 将所有请求重写为 index.php(不需要匹配),它不是以/api 开头,或者不是以('.html',或'.js'或'.css'或'.png'结束) 我的例子还是这样
MVC模式代表 Model-View-Controller(模型-视图-控制器) 模式 MVC模式用于应用程序的分层开发 Model(模型) - 模型代表一个存取数据的对象或 JAVA PO
我想为组织模式创建一个 RDF 模式世界。您可能知道,组织模式文档基于层次结构大纲,其中标题是主要的分组实体。 * March auxiliary :PROPERTIES: :HLEVEL: 1 :E
我正在编写一个可以从文件中读取 JSON 数据的软件。该文件包含“person”——一个值为对象数组的对象。我打算使用 JSON 模式验证库来验证内容,而不是自己编写代码。符合代表以下数据的 JSON
假设我有 4 张 table 人 公司 团体 和 账单 现在bills/persons和bills/companys和bills/groups之间是多对多的关系。 我看到了 4 种可能的 sql 模式
假设您有这样的文档: doc1: id:1 text: ... references: Journal1, 2013, pag 123 references: Journal2, 2014,
我有这个架构。它检查评论,目前工作正常。 var schema = { id: '', type: 'object', additionalProperties: false, pro
这可能很简单,但有人可以解释为什么以下模式匹配不明智吗?它说其他规则,例如1, 0, _ 永远不会匹配。 let matchTest(n : int) = let ran = new Rand
我有以下选择序列作为 XML 模式的一部分。理想情况下,我想要一个序列: 来自 my:namespace 的元素必须严格解析。 来自任何其他命名空间的元素,不包括 ##targetNamespace和
我希望编写一个 json 模式来涵盖这个(简化的)示例 { "errorMessage": "", "nbRunningQueries": 0, "isError": Fals
首先,我是 f# 的新手,所以也许答案很明显,但我没有看到。所以我有一些带有 id 和值的元组。我知道我正在寻找的 id,我想从我传入的三个元组中选择正确的元组。我打算用两个 match 语句来做到这
我是一名优秀的程序员,十分优秀!