标签: data-manipulation

R 中的条件连接字符串

我在 R 中有这个数据集:

id = 1:5
col1 = c("12 ABC", "123", "AB", "123344567", "1345677.")
col2 = c("gggw", "12", "567", "abc 123", "p")
col3 = c("abw", "abi", "klo", "poy", "17df")
col4 = c("13 AB", "344", "Huh8", "98", "b")
    
my_data = data.frame(id, col1, col2, col3, col4)

 id      col1    col2 col3  col4
1  1    12 ABC    gggw  abw 13 AB
2  2       123      12  abi   344
3  3        AB     567  klo  Huh8
4  4 123344567 abc 123  poy    98
5  5  1345677.       p …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation

7
推荐指数
2
解决办法
100
查看次数

awk 命令:如果行不以字符开头,则删除前行的新行

尝试使用 awk 命令来实现此规则:如果行不以“O|”开头 或“A|” 或“S|” 我想删除前一行的新行

我在输入中有这个文件(input.txt)

O|field1|field2
O|field1|
field2
A|field1|
field2
S|field1|
field2
O|field1|field2
O|field1|field2
O|field1|
field2
A|field1|
field2
S|field1|
field2
O|field1|field2
Run Code Online (Sandbox Code Playgroud)

我想要这个输出

O|field1|field2
O|field1|field2
A|field1|field2
S|field1|field2
O|field1|field2
O|field1|field2
O|field1|field2
A|field1|field2
S|field1|field2
O|field1|field2
Run Code Online (Sandbox Code Playgroud)

执行这段代码

awk '/^O\|/ || /^A\|/ || /^S\|/ {printf "%s", $0; next} 1 {print}' input.txt > output.txt

它返回

O|field1|field2O|field1|field2
A|field1|field2
S|field1|field2
O|field1|field2O|field1|field2O|field1|field2
A|field1|field2
S|field1|field2
O|field1|field2
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

unix string awk data-manipulation

7
推荐指数
1
解决办法
449
查看次数

按组累计最小值

我想计算min给定组内的累积值。

我当前的数据框:

Group <- c('A', 'A', 'A','A', 'B', 'B', 'B', 'B') 
Target <- c(1, 0, 5, 0, 3, 5, 1, 3) 
data <- data.frame(Group, Target))
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

Desired.Variable <- c(1, 0, 0, 0, 3, 3, 1, 1)
data <- data.frame(Group, Target, Desired.Variable))
Run Code Online (Sandbox Code Playgroud)

对此的任何帮助将不胜感激!

r data-manipulation

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

仅识别非重复行

我有一个包含许多重复行的数据集,我想仅隔离非重复值。我的 df 看起来像这样

df <- data.frame("group" = c("A", "A", "A","A","A","B","B","B"), 
                    "id" = c("id1", "id2", "id3", "id1", "id2","id1","id2","id1"), 
                    "Val" = c(10,10,10,10,10,12,12,12))
Run Code Online (Sandbox Code Playgroud)

我想提取的只是没有重复的行。即我的最终数据集应该如下所示

final <- data.frame("group" = c("A","B"), 
                 "id" = c("id3","id2"), 
                 "Val" = c(10,12))
Run Code Online (Sandbox Code Playgroud)

请注意,我对查找唯一值不感兴趣,而是对不重复的值感兴趣。我知道如何找到独特的价值,例如df %>% distinct()做这份工作。它正在区分我正在努力解决的非重复行

r unique rows data-manipulation

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

R dplyr - 按名称模式重新排列列

我有一些长格式数据,1)需要将其重新整形为宽,然后 2)需要根据其名称模式对列进行排序。示例数据如下:

#Orignial data
set.seed(100)
long_df <- tibble(id = rep(1:5, each = 3),
                  group = rep(c('g1','g2','g3'), times = 5),
                  mean = runif(15, min = 1, max = 10),
                  sd = runif(15, min = .025, max = 1))
long_df

# A tibble: 15 x 4
      id group  mean    sd
   <int> <chr> <dbl> <dbl>
 1     1 g1     3.77 0.677
 2     1 g2     3.32 0.224
 3     1 g3     5.97 0.374
 4     2 g1     1.51 0.375
 5     2 g2     5.22 0.698
 6     2 g3 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation reshape dplyr tidyverse

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

根据每组的特定行计算 R 中行之间的差异

大家好,我有一个数据框,其中每个 ID 都有 1-5 次多次访问。我正在尝试计算每次访问与访问 1 之间的分数差异。(分数(Visit 5-score(Visit1)等)。我如何在 R 中实现这一目标?下面是示例数据集和结果数据集

structure(list(ID = c("A", "A", "A", "A", "A", "B", "B", "B"), 
    Visit = c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L), Score = c(16, 
        15, 13, 12, 12, 20, 19, 18)), class = "data.frame", row.names = c(NA, 
    -8L))

#>   ID Visit Score
#> 1  A     1    16
#> 2  A     2    15
#> 3  A     3    13
#> 4  A     4    12
#> 5  A     5    12
#> 6  B     1 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation dataframe difference dplyr

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

R:从决策树中提取规则

我正在使用 R 编程语言。最近,我读到了一种名为“强化学习树”(RLT)的新决策树算法,据称该算法有可能使“更好”的决策树适合数据集。该库的文档可在此处找到:https ://cran.r-project.org/web/packages/RLT/RLT.pdf

我尝试使用这个库在(著名的)鸢尾花数据集上运行分类决策树:

library(RLT)
data(iris)
fit = RLT(iris[,c(1,2,3,4)], iris$Species, model = "classification", ntrees = 1)
Run Code Online (Sandbox Code Playgroud)

问题:从这里开始,是否可以从这个决策树中提取“规则”?

例如,如果您使用 CART 决策树模型:

library(rpart)
library(rpart.plot)

fit <-rpart( Species ~. , data = iris)
rpart.plot(fit)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

 rpart.rules(fit)

    Species  seto vers virg                                               
     setosa [1.00  .00  .00] when Petal.Length <  2.5                     
 versicolor [ .00  .91  .09] when Petal.Length >= 2.5 & Petal.Width <  1.8
  virginica [ .00  .02  .98] when Petal.Length >= 2.5 & Petal.Width >= 1.8
Run Code Online (Sandbox Code Playgroud)

是否可以使用 RLT 库来做到这一点?我一直在阅读这个库的文档,似乎找不到提取决策规则的直接方法。我知道这个库通常是用作随机森林(没有决策规则)的替代品 - 但我正在阅读该算法的原始论文,其中他们指定 RLT 算法适合单个决策树(通过RLT …

tree r data-manipulation prediction decision-tree

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

Python - 将周末值推至周一

我有一个数据框(称为 df),如下所示:

df

我试图获取所有周末“成交量”值(“WEEKDAY”列 = 5(星期六)或 6(星期日)的值)并将它们加到随后的星期一(WEEKDAY = 0)。

我尝试了一些方法,但没有任何效果,以最后三行为例:

我拥有的

我期待的是这样的:

我的期望是什么

要重现该问题:

!wget https://raw.githubusercontent.com/brunodifranco/TCC/main/volume_por_dia.csv

df = pd.read_csv('volume_por_dia.csv').sort_values('Datas',ascending=True)
df['Datas'] = pd.to_datetime(df['Datas'])
df = df_volume_noticias.set_index('Datas')
df['WEEKDAY'] = df.index.dayofweek
df
Run Code Online (Sandbox Code Playgroud)

python datetime data-manipulation weekend dataframe

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

R:递归平均

我正在使用 R 编程语言。我有以下数据:

library(dplyr)

my_data = data.frame(id = c(1,1,1,1,2,2,2,3,4,4,5,5,5,5,5), var_1 = sample(c(0,1), 15, replace = TRUE) , var_2 =sample(c(0,1), 15 , replace = TRUE) )

my_data = data.frame(my_data %>% group_by(id) %>% mutate(index = row_number(id)))

my_data = my_data[,c(1,4,2,3)]
Run Code Online (Sandbox Code Playgroud)

数据看起来像这样:

   id index var_1 var_2
1   1     1     0     1
2   1     2     0     0
3   1     3     1     1
4   1     4     0     1
5   2     1     1     0
6   2     2     1     1
7   2     3     0     1
8   3     1 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation dplyr

6
推荐指数
2
解决办法
334
查看次数

根据预定义范围计算列的行和

我有一个与此类似的数据集:

  dataset <- structure(
list(
Participant.Id = 1:5,

x1 = c(10L, 20L, 30L, 40L, 50L),
x2 = c(15L, 25L, 35L, 45L, 55L),
x3 = c(20L, 25L, NA, 45L, NA),
x4 = c(25L, 30L, NA, 50L, NA),
x5 = c(NA, 35L, NA, 55L, NA),
x6 = c(NA, 35L, NA, NA, NA),

y1 = c(10L, 20L, 30L, 40L, 50L),
y2 = c(15L, 25L, 35L, 45L, 55L),
y3 = c(20L, 25L, NA, 45L, NA),
y4 = c(25L, 30L, NA, 50L, NA),
y5 = …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation dataframe dplyr

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