小编Use*_*321的帖子

在字符串中创建字母替换的所有组合

我有一个字符串"ECET",我想创建所有可能的字符串,我用"X"替换一个或多个字母(除了第一个之外).

所以在这种情况下我的结果是:

> result
[1] "EXET" "ECXT" "ECEX" "EXXT" "EXEX" "ECXX" "EXXX"
Run Code Online (Sandbox Code Playgroud)

关于如何处理这个问题的任何想法?

这不仅可以创建"X"的可能组合/排列,还可以创建如何将它们与现有字符串组合.

combinations r

20
推荐指数
3
解决办法
1213
查看次数

使用数据表或 igraph 按组查找直接邻居

我有一个data.table

groups <- data.table(group = c("A", "B", "C", "D", "E", "F", "G"), 
                     code_1 = c(2,2,2,7,8,NA,5),
                     code_2 = c(NA,3,NA,3,NA,NA,2),
                     code_3 = c(4,1,1,4,4,1,8))

group code_1 code_2 code_3
  A      2     NA      4
  B      2      3      1
  C      2     NA      1
  D      7      3      4
  E      8     NA      4
  F     NA     NA      1
  G      5      2      8
Run Code Online (Sandbox Code Playgroud)

我想要实现的是让每个组根据可用代码找到直接邻居。例如:A 组由于 code_1 具有直接邻居组 B、C(code_1 在所有组中等于 2)并且由于 code_3 具有直接邻居组 D、E(在所有这些组中 code_3 等于 4)。

我尝试的是针对每个代码,根据匹配对第一列(组)进行子集化,如下所示:

groups$code_1_match = list()
for (row in 1:nrow(groups)){

  set(groups, i=row, j="code_1_match", list(groups$group[groups$code_1[row] …
Run Code Online (Sandbox Code Playgroud)

r igraph data.table

14
推荐指数
4
解决办法
512
查看次数

从R中的字符串中获取非零值

我有两个字符串:

x1 = "03011000"
x2 = "13001000"
Run Code Online (Sandbox Code Playgroud)

字符串在非零字符中具有精确重叠.我想为每个角色位置获取最大元素.所以在这种情况下,结果将是:

result = "13011000"
Run Code Online (Sandbox Code Playgroud)

第一个字符是1,因为x2在第一个位置有1.第四个字符也是1,因为x1在此位置有1.我的方式如下:

paste0(mapply(pmax, strsplit(x1, ""), strsplit(x2, "")), collapse = "")
Run Code Online (Sandbox Code Playgroud)

但这似乎过分了,因为我必须将每个角色分成它们的组件并进行比较.有更好的方法吗?

string r

6
推荐指数
1
解决办法
102
查看次数

数据表中的累积向量

我有以下数据表:

library(data.table)
dat = data.table(j = c(3,8,9,11,10,28), gr = c(9,9,9,9,10,10))
> dat
    j gr
1:  3  9
2:  8  9
3:  9  9
4: 11  9
5: 10 10
6: 28 10
Run Code Online (Sandbox Code Playgroud)

有两个组(由 'gr' 指定)并且它们是有序的。现在我想要实现的是为每组的每一行创建一个累积向量值在 'j' 中。结果应该是一list列,如下所示:

res_dat = data.table(j = c(3,8,9,11,10,28), gr = c(9,9,9,9,10,10),
                     res = list(3, c(3,8), c(3,8,9), c(3,8,9,11),
                                10, c(10, 28)))
> res_dat
    j gr         res
1:  3  9           3
2:  8  9         3,8
3:  9  9       3,8,9
4: 11  9  3, 8, 9,11
5: …
Run Code Online (Sandbox Code Playgroud)

r data.table

6
推荐指数
1
解决办法
109
查看次数

如何删除 tsibble 对象聚合中的时间分量?

我一直在使用该tsibble包,但我不知道如何从聚合结果中删除时间分量的正确方法。因此,在下面的数据集中,我想要按地区和州划分的平均行程。tsibble将 转换为 a 的正确方法是tibble(可能是,我只是不确定)还是我缺少一些选项来实现聚合?

library(tsibble)
library(dplyr)

tourism %>% group_by(Region, State) %>% summarise(Mean_trips = mean(Trips))

# A tsibble: 6,080 x 4 [1Q]
# Key:       Region, State [76]
# Groups:    Region [76]
   Region   State           Quarter Mean_trips
   <chr>    <chr>             <qtr>      <dbl>
 1 Adelaide South Australia 1998 Q1       165.
 2 Adelaide South Australia 1998 Q2       112.
 3 Adelaide South Australia 1998 Q3       148.

## This is not what I want, this is what I want:

tourism %>% as_tibble …
Run Code Online (Sandbox Code Playgroud)

r dplyr tibble tsibble

5
推荐指数
1
解决办法
736
查看次数

使用来自另一列的位置在数据表中子集字符串列

我有一个数据表,其中包含以下类型的多个列:

   attr1 attr2
1: 01001 01000
2: 11000 10000
3: 00100 00100
4: 01100 01000

DT = setDT(structure(list(attr1 = c("01001", "11000", "00100", "01100"), 
    attr2 = c("01000", "10000", "00100", "01000")), .Names = c("attr1", 
"attr2"), row.names = c(NA, -4L), class = "data.frame"))
Run Code Online (Sandbox Code Playgroud)

所有列都是字符串而不是数字.我想要实现的目标如下:

1)我想找到attr1字符串中出现"1"的位置

2)在这些位置取attr2的值

我在这种情况下的结果是:

[1] "10" "10" "1"  "10"
Run Code Online (Sandbox Code Playgroud)

作为第一行中的示例,attr1在位置2和5中具有"1",I在位置2和5中的第一行attr2并且以"10"结束.

我想要做的就是对列进行修改,然后使用它,但我真的希望有更好的方法.

r stringr data.table

4
推荐指数
2
解决办法
169
查看次数

根据第一个列值而不合并计算第二个数据表中的行

我承认问题的标题有点神秘,但请耐心等待.我有两个数据表,一个小,一个非常大,包含无用的信息.

第一个数据集(dt1)采用以下格式:

      CG     MG1     MG2
1:   49693 914569 4417756
2:   50422  22514   31343
3:   90543  90544 4531361
4:  142864 143471  143806
5:  386093   2149 4149104
6: 2674708  23921   24327
Run Code Online (Sandbox Code Playgroud)

所以它只包含数字,其中一些可以在第二个数据表中找到.第二个数据表(dt2)包含许多字段,但我需要的是ID.

      ID
1:   49693
2:   49693
3:   49693
4:   49693
5:   49693
6: 2674708
7: 2679818
8: 2680618
9:   49693
10: 2695042
Run Code Online (Sandbox Code Playgroud)

我想要做的是在dt1中再添加3个列,每个列指定dt2中是否有超过5行,ID分别等于CG1,MG1,MG2.我的最终结果将是:

     CG     MG1     MG2    CG_OK MG1_OK MG2_OK
1:   49693 914569 4417756     1      0      0
2:   50422  22514   31343     0      0      0
3:   90543  90544 4531361     0      0      0
4: …
Run Code Online (Sandbox Code Playgroud)

r data.table

3
推荐指数
1
解决办法
119
查看次数

如何在 Sankey 图表 networkD3 中添加列标题

我正在制作一个 Sankey 图表,我想在每列的顶部添加文本,以便简要说明所显示的内容。来自 r-graph galery 的示例代码:

library(networkD3)

# A connection data frame is a list of flows with intensity for each flow
links <- data.frame(
  source=c("group_A","group_A", "group_B", "group_C", "group_C", "group_E"), 
  target=c("group_C","group_D", "group_E", "group_F", "group_G", "group_H"), 
  value=c(2,3, 2, 3, 1, 3)
)

# From these flows we need to create a node data frame: it lists every entities involved in the flow
nodes <- data.frame(
  name = unique(c(as.character(links$source), as.character(links$target)))
)

# With networkD3, connection must be provided using id, not using …
Run Code Online (Sandbox Code Playgroud)

r d3.js sankey-diagram networkd3 htmlwidgets

3
推荐指数
1
解决办法
382
查看次数