我在更大的数据集中有这些列(这里我只报告资产“x”,但有不同的资产,因此想法是为每个资产复制该过程):
df <- structure(list(
asset = c("x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x")
col1 = c(10, 10, -22, 11, -13, 15, -7, -10, 10, -5, 3),
cumsum(col1) = c(10, 20, -2, 9, -4, 11, 4, -6, 4, -1, 2),
class = "data.frame", row.names = c(NA, -11L)
)
Run Code Online (Sandbox Code Playgroud)
我想纠正 col1 中的负数,使 cumsum(col1) 等于
cumsum(col1) = c(10, 20, 0, 11, 0, 15, 8, 0, 10, 5, 8)
Run Code Online (Sandbox Code Playgroud)
为了得到这个结果,我需要纠正 col1 数字当且仅当负数大于前一个数字的总和。例如,-22第三个位置的 应该变为-20与前一个的 cumsum 相匹配10+10 …
下面的工作,但是有没有更好的“R 方法”来实现类似的结果?我本质上是尝试根据用户定义的函数(当前仅使用循环)将组创建/分配到各个行项目中。
df1 <- data.frame(group = c("A", "B", "C"),
volume = c(200L, 45L, 104L)
)
print(df1)
#> group volume
#> 1 A 200
#> 2 B 45
#> 3 C 104
Run Code Online (Sandbox Code Playgroud)
我希望volume根据组将其分成多行,以便最终结果是一个数据帧,其中新卷(vol2在下面)将添加到上面的原始卷。在此示例中,我应用除数为 52 的整数数学,所以我的最终结果应该是:
print(df3)
#> group vol2
#> 1 A 52
#> 2 A 52
#> 3 A 52
#> 4 A 44
#> 21 B 45
#> 31 C 52
#> 32 C 52
Run Code Online (Sandbox Code Playgroud)
下面的代码确实让我得到了上面显示的期望结果:
div <- 52L
df1$intgr …Run Code Online (Sandbox Code Playgroud) 我正在使用 Keycloak 18.0.2。Okta 是我配置的身份提供商之一。我正在使用 OIDC 提供商(不是 SAML)。我想将来自 Okta 的传入组声明映射到我在 Keycloak 中定义的用户组。我找不到很多关于如何在传入列表中搜索特定传入组的示例(Okta 中的组声明是一个列表,又名数组)。这意味着,在 Okta 中,如果我要预览 Okta 授权服务器的令牌,令牌将如下所示:
{
...
"scp": [
"openid"
],
"auth_time": 1000,
"sub": "testuser@xyz.com",
...
"groups": [
"Group1",
"Group2",
"Group3"
]...
}
Run Code Online (Sandbox Code Playgroud)
在Keycloak中,我定义了一个名为“AsiaPacific”的用户组。在 keycloak 身份映射器提供程序详细信息屏幕中,我想说,如果传入组声明包含“Group1”,则映射到组“AsiaPacific”,但我似乎无法使其工作。我在此处的“名称”和“值”字段中输入什么,因为无论我指定什么,它似乎都不起作用?同样,传入的组声明的值不是字符串,而是字符串数组。提前致谢。
我有一个包含一些列和分组变量的数据集。我想减少每个分组变量的数据集、max_n每个分组级别的行数。同时我想保留其他列的分布。我的意思是我想保留数据过滤后的最低值a和最高值。b这就是为什么我使用下面的函数setorderv。
library(data.table)
set.seed(22)
n=20
max_n = 6
dt <- data.table("grp"=sample(c("a", "b", "c"), n, replace=T),
"a"=sample(1:10, n, replace=T),
"b"=sample(1:20, n, replace=T),
"id"=1:n)
setorderv(dt, c("grp", "a", "b"))
dt
Run Code Online (Sandbox Code Playgroud)
我的临时解决方案不太优雅,也不太像 data.table 那样,如下所示:
dt_new <- data.table()
for (gr in unique(dt[["grp"]])) {
tmp <- dt[grp == gr, ]
n_tmp <- nrow(tmp)
if (n_tmp > max_n) {
tmp <- tmp[as.integer(seq(1, n_tmp, length.out=max_n)),]
}
dt_new <- rbindlist(list(dt_new, tmp))
}
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点? 编辑:我想要一个 data.table 解决方案。
现在的代码太庞大
我有3个文件:
{
"id": 1,
"user": "Brian1",
"configs": [
"a",
"b",
"c",
"d"
]
}
----
{
"id": 2,
"user": "max_en",
"configs": [
"a",
"h",
"i",
"j"
]
}
----
----
{
"id": 3,
"user": "userX",
"configs": [
"t",
"u",
"s",
"b"
]
}
Run Code Online (Sandbox Code Playgroud)
我想将所有“configs”数组合并到一个数组中而不重复,如下所示:
{
"configs": [
"a",
"b",
"c",
"d",
"h",
"i",
"j",
"t",
"u",
"s",
]
}
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
Aggregation.group("").addToSet("configs").as("configs")和{ _id: "", 'configs': { $addToSet: '$configs' } }
第一个给出错误,因为我将字段名留空(我不知道在那里放什么)。
第二个返回一个合并的数组,但有重复项。
我有以下数据集
df<- data.frame(x1=c(1,5,7,8,2,2,3,4,5,10),
birthyear=c(1992,1994,1993,1992,1995,1999,2000,2001,2000, 1994))
Run Code Online (Sandbox Code Playgroud)
我想以 3 年为间隔将人员分组在一起,以便 1992-1994 年出生的人员属于第 1 组,1995-1997 年出生的人员属于第 2 组,依此类推。我有一个更大的数据集,包含超过 10000 个条目。我怎样才能以最有效的方式做到这一点?
你好\xc2\xa1我有以下问题。\n数据框中的Group_by可以对信息进行分组并估计一些值,但是是否有任何函数可以对信息进行分组并根据其相应的值保留估计值?\n我展示了以下示例:
\n根据
\n| ID | location |value|\n| ---- | ---------|-----|\n| 1 | a |5 |\n| 1 | a |2 |\n| 2 | b |3 |\n| 2 | d |1 |\n| 3 | c |2 |\n| 3 | c |3 |\nRun Code Online (Sandbox Code Playgroud)\ngroup_by(base, ID, location) %>% summarise(value=sum(value))\nRun Code Online (Sandbox Code Playgroud)\n结果一定是
\n| ID | location |value|\n| ---- | ---------|-----|\n| 1 | a |7 |\n| 2 | b |3 |\n| 2 | d |1 |\n| 3 | c |5 |\nRun Code Online (Sandbox Code Playgroud)\n … 来自数据框 df1 =
| 区域 | 顺序 | X | 是 |
|---|---|---|---|
| A | 2 | 604582.25 | 320710 |
| A | 1 | 604590.25 | 320704.75 |
| A | 3 | 604579.25 | 320710 |
| 乙 | 2 | 536584.47 | 176977.83 |
| 乙 | 1 | 536570 | 176996.43 |
| C | 1 | 509202.13 | 307995.99 |
| C | 2 | 509205.3 | 307951.24 |
需要生成成
df1 =
| 区域 | XY_by_sequence |
|---|---|
| A | 604590.25 320704.75 , 604582.25 320710 , 604579.25 320710 |
| 乙 | 536570 176996.43 , 536584.47 176977.83 |
| C | 509202.13 307995.99 , 509205.3 307951.24 |