这可能很简单,我觉得这很愚蠢.我想使用mutate更改数据框中因子的级别.简单的例子:
library("dplyr")
dat <- data.frame(x = factor("A"), y = 1)
mutate(dat,levels(x) = "B")
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error: Unexpected '=' in "mutate(dat,levels(x) ="
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?如何用mutate改变因子水平?
我有一个由 n 个子字符串组成的字符串。它可能看起来像这样:
string <- c("A_AA", "A_BB", "A_BB_AAA", "B_AA", "B_BB", "B_CC")
Run Code Online (Sandbox Code Playgroud)
此字符串中的每个子组件都以“_”与其他任何子组件分隔。这里,第一级由值“A”和“B”组成,第二级由“AA”、“BB”和“CC”组成,第三级由“AAA”组成。更深的嵌套是可能的,解决方案应该扩展到这些情况。嵌套不一定是平衡的,例如“A”只有两个孩子,而“B”有三个,但它也有一个“B”没有的孙子。
本质上,我想在某种 R 对象(最好是列表)中重新创建此字符串中的嵌套结构。因此,嵌套列表结构如下所示:
list("A" = list("AA", "BB" = list("AAA")),
"B" = list("AA", "BB", "CC"))
> $A
$A[[1]]
[1] "AA"
$A$BB
$A$BB[[1]]
[1] "CCC"
$B
$B[[1]]
[1] "AA"
$B[[2]]
[1] "BB"
$B[[3]]
[1] "CC"
Run Code Online (Sandbox Code Playgroud)
对此的任何帮助表示赞赏
我需要从包含组的数据集创建(带有R)对的滚动索引.请考虑以下数据集:
times <- c(4,3,2)
V1 <- unlist(lapply(times, function(x) seq(1, x)))
df <- data.frame(group = rep(1:length(times), times = times),
V1 = V1,
rolling_index = c(1,1,2,2,3,3,4,5,5))
df
group V1 rolling_index
1 1 1 1
2 1 2 1
3 1 3 2
4 1 4 2
5 2 1 3
6 2 2 3
7 2 3 4
8 3 1 5
9 3 2 5
Run Code Online (Sandbox Code Playgroud)
我的数据框包括变量组和V1.在每个组内,V1指定一个运行索引(可以从1开始,也可以不从1开始).
我想创建一个看起来像rolling_index的新索引变量.此变量将同一组中的行和连续的V1值分组,从而创建新的滚动索引.这个新索引必须是连续的组.如果组内存在不均匀的行数(例如,组2),则最后一行将获得其自己的滚动索引值.
我有一个列表对象,看起来像这样
list1 <- list(c("A1", "A2"), "B", c("C1", "C2"))
Run Code Online (Sandbox Code Playgroud)
从这里我想生成一个列表,其中包含list1中所有元素组合的列表.对于list1,它应该是这样的
list2 <- list(list("A1", "B", "C1"), list("A1", "B", "C2"), list("A2", "B", "C1"), list("A2", "B", "C2"))
Run Code Online (Sandbox Code Playgroud)
如果list1中有更多元素,则无法手动生成.我如何在R中这样做呢?