小编And*_*own的帖子

计算 R 列中出现次数的相似度

我有以下数据:

df <- data.frame(
  group = c('r1','r2','r3','r4'),
  X1 = c('A','B','C','K'),
  X2 = c('A','C','M','K'),
  X3 = c('D','A','C','K')
)

> df
  group X1 X2 X3
1    r1  A  A  D
2    r2  B  C  A
3    r3  C  M  C
4    r4  K  K  K
Run Code Online (Sandbox Code Playgroud)

我想根据列, &估计“相似度分数”。例如,在r1(或第 1 行)内,3 个元素中有 2 个相似,因此得分为 2/3 (~67%)。而r4(或第 4 行),分数将为 3/3 (100%)。期望的结果如下:X1X2X3groupgroup

> df
  group X1 X2 X3 similarity_score
1    r1  A  A  D .67
2    r2  B  C …
Run Code Online (Sandbox Code Playgroud)

r dplyr

19
推荐指数
4
解决办法
1348
查看次数

同时编辑多行代码的最快方法

在 RStudio 源编辑器中跨多行代码执行相同操作的最佳方法是什么?

实施例1

假设我从文本文件复制一个列表并将其粘贴到 R 中(如下列表所示)。然后,我想在每个单词周围添加引号,并在每一行添加一个逗号,这样我就可以创建一个向量。

Krista Hicks
Miriam Cummings
Ralph Lamb
Jaylene Gilbert
Jordon Sparks
Kenna Melton
Run Code Online (Sandbox Code Playgroud)

预期输出

"Krista Hicks",
"Miriam Cummings",
"Ralph Lamb",
"Jaylene Gilbert",
"Jordon Sparks",
"Kenna Melton"
Run Code Online (Sandbox Code Playgroud)

实施例2

如何在多行上添加缺少的括号。例如,如果我有一个if语句,那么如何为names第 1 行和第 4 行添加缺少的左括号。

if (!is.null(names pattern))) {
  vec <- FALSE
  replacement <- unname(pattern)
  pattern[] <- names pattern)
}
Run Code Online (Sandbox Code Playgroud)

预期输出

if (!is.null(names(pattern))) {
  vec <- FALSE
  replacement <- unname(pattern)
  pattern[] <- names(pattern)
}
Run Code Online (Sandbox Code Playgroud)

*注意:这些名称仅来自随机名称生成器。

r rstudio multiple-cursor

10
推荐指数
1
解决办法
9578
查看次数

如何按行汇总多列中的前 n 个值?

在我的数据框中,我有多列包含学生成绩。我想对“测验”列进行求和(例如测验1、测验2)。但是,我只想对前 2 个值求和,而忽略其他值。我想创建一个包含总计(即前 2 个值的总和)的新列。

\n

一个问题是,有些学生的成绩与给定行中的前 2 名成绩并列。例如,Aaron 的得分很高,为 42,但随后有两个得分并列第二高(即 36)。

\n

数据

\n
df <- \n  structure(\n  list(\n    Student = c("Aaron", "James", "Charlotte", "Katie", "Olivia", \n                "Timothy", "Grant", "Chloe", "Judy", "Justin"),\n    ID = c(30016, 87311, 61755, 55323, 94839, 38209, 34096, \n           98432, 19487, 94029),\n    Quiz1 = c(31, 25, 41, 10, 35, 19, 27, 42, 15, 20),\n    Quiz2 = c(42, 33, 34, 22, 23, 38, 48, 49, 23, 30),\n    Quiz3 = c(36, 36, 34, 32, 43, 38, 44, 42, …
Run Code Online (Sandbox Code Playgroud)

r tidyverse

9
推荐指数
2
解决办法
1083
查看次数

干净的架构。用例用法?

我想知道UseCase在Clean Architecture中的具体应用是什么。因为,如今当您拥有远程数据源或 REST API 时,繁重的流程都是在服务器端完成的,因此您无需在 UseCase 中实现任何逻辑。所有逻辑都是状态管理,用于处理加载错误等,这些必须位于状态管理内部。我错了吗?您是否有需要使用用例的场景?

flutter clean-architecture

8
推荐指数
1
解决办法
6230
查看次数

R - 如何按列索引使用 dplyr left_join?

如何使用列索引来dplyr::left_join(和你的家人)?

示例(按列名称):

    library(dplyr)
    data1 <- data.frame(var1 = c("a", "b", "c"), var2 = c("d", "d", "f")) 
    data2 = data.frame(alpha = c("d", "f"), beta = c(20, 30))
    left_join(data1, data2, by = c("var2" = "alpha"))
Run Code Online (Sandbox Code Playgroud)

但是,替换by = c("var2" = "alpha"))为此by = c(data1[,2] = data2[,1])错误的结果:

by必须是(命名的)字符向量、列表或自然连接的 NULL(不建议在生产代码中使用),不符合逻辑。

我需要在新函数上使用“列位置”for 循环。我该怎么做?

join r left-join dplyr

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

基于R dplyr中的条件折叠一个热编码列

我有一张表,其中包含热编码的变量。我想将这些变量折叠到一列中。例如,任何具有“high”、“med”或“low”的列,我希望成为具有 high = 0、med = 1 和 low = 2 的数字编码的一列。我如何在 R 中执行此dplyr操作?我怀疑转向会有所帮助,但我不知道从哪里开始。生成的列名称应包含三列的名称,不带 high、med、low 名称。例如,我会将 columns d-high_cm1d-med_cm1、转换d-low_cm1d-cm1数字编码。

输入:

sex age    cost_cm  d-high_cm1 d-med_cm1 d-low_cm1 c-high_cm1 c-med_cm1 c-low_cm1
f   old    1        1           0         0           1           0         0
m   young  0        1           0         0           1           0         0
m   old    0        0           1         0           0           1         0
f   young  0        1           0         0           0           0         1
m   old    1        0           0         1           0           0 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

R 中数据帧的 For 循环

我正在尝试用R中的for循环执行累加功能,因为公司提供的财务信息是针对不同概念累积的(这意味着一月的信息只是一月的信息,二月的信息是一月的总和)二月、三月是一月、二月、三月之和等)。

例如,假设我有下一个数据框:

Concepts <- c("Concept1", "Concept2", "Concept3")
January <- c(5,10,16)
February <- c(9,14,20)
March <- c(16,20,23)

df <- data.frame(Concepts, January, February, March)
Run Code Online (Sandbox Code Playgroud)

这将为我提供下一个数据框:

Concepts  January  February  March
Concept1    5         9        16 
Concept2    10        14       20
Concept3    16        20       23 
Run Code Online (Sandbox Code Playgroud)

我需要实现的是下一个数据框(请注意,二月是二月和一月之间的差异,三月是二月和三月之间的差异):

Concepts  January  February  March
Concept1    5         4        7 
Concept2    10        4        6
Concept3    16        4        3
Run Code Online (Sandbox Code Playgroud)

为了实现第二个数据帧,我首先创建了一个具有相同数量的 df 行的空数据帧,然后使用 for 循环 cbind 数据帧的前两行(因为它们不需要任何操作)并使用索引添加下一个计算差异后的。上面的代码如下:

df <- data.frame(Concepts, January, February, March)
df2 <- data.frame(matrix(nrow=nrow(df),ncol=ncol(df))) #Empty Dataframe with the same number  of rows …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

多列代表一个值时的频率表 (R)

我有一个这样的数据集:

ID    color1   color2  color3   shape1       shape2        size
55    red     blue     NA       circle       triangle      small
67    yellow  NA       NA       triangle     NA            medium
83    blue    yellow   NA       circle       NA            large
78    red     yellow   blue     square       circle        large
43    green   NA       NA       square       circle        small
29    yellow  green    NA       circle       triangle      medium

Run Code Online (Sandbox Code Playgroud)

我想创建一个数据框,其中包含每个变量的频率和百分比,但我遇到了麻烦,因为在某些情况下同一变量有多个列。


Variable      Level        Freq        Percent 
 
color         blue          3           27.27
              red           2           18.18
              yellow        4           36.36
              green         2           18.18
              total         11          100.00

shape         circle        5           50.0       
              triangle      3           30.0
              square        2 …
Run Code Online (Sandbox Code Playgroud)

r

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

React Typescript:Antd 表过滤器

当我尝试以下操作时,我在列中收到错误:

{
   title: "Gruppe",
   dataIndex: 'group',
   filters: [
      this.state.dropdownItems.map((item) => ({
         text: item.group,
         value: item.group
      })
   )],
   onFilter: (value, record) => record.TransactionType.includes(value),
},
Run Code Online (Sandbox Code Playgroud)

错误:*TS2322 (TS) 类型 '({ 标题:字符串;dataIndex:字符串;键:字符串;宽度:数字;对齐:“中心”;排序器:(a: 任意,b: 任意) => 数字;过滤器? : 未定义; onFilter?: 未定义; 渲染?: 未定义; } | { 标题: 字符串; ... 7 更多...; 渲染?: 未定义; } | { ...; } | { ...; } | { ...; })[]' 不可分配给类型“ColumnsType”。输入 '{ 标题:字符串;数据索引:字符串;键:字符串;宽度:数量;居中对齐”; 排序器:(a:任意,b:任意)=> 数字;过滤器?:未定义;onFilter?:未定义;渲染?:未定义;} | { 标题:字符串;... 7 个以上 ...; 渲染?:未定义;} | { ...; } | { ...; …

javascript typescript reactjs antd

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

如何对列表中的某些元素进行排序,同时保留其余元素?

我有两种类型略有不同的列表需要排序;但是,我只需要对列表的部分进行排序,同时保留一些元素(即它们的索引应该保持不变)。

首先,假设我有一个数字列表:

x <- c(4, 8, 1, 7, 3, 0, 5, 2, 6, 9)
Run Code Online (Sandbox Code Playgroud)

我知道如果我只想对前 5 个元素进行排序,那么我可以这样做:

x[1:5] <- sort(x[1:5])
x

# [1] 1 3 4 7 8 0 5 2 6 9
Run Code Online (Sandbox Code Playgroud)

其次,如果我想对列表进行排序,但将 NA 保留在适当的位置,那么我可以这样做(尽管我确信有更好的方法来做到这一点):

y <- c(4, 8, 1, NA, NA, 7, 3, 0, 5, 2, NA, 6, NA, 9)

y[which(is.na(y)==FALSE)] <- sort(y[which(is.na(y)==FALSE)])
y

# [1]  0  1  2 NA NA  3  4  5  6  7 NA  8 NA  9
Run Code Online (Sandbox Code Playgroud)

问题:如何按组对包含字母数字字符的列表进行排序?那么,我想首先按预定义的字母顺序(即c(C, A, B))对列表进行排序,然后按组进行数字排序,但将 NA 保留在其原始索引位置? …

sorting r list

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