R 将字符随机附加到行的百分比

问题描述 投票:0回答:1

我有一个数据框“df”,如下所示:

日期 价值1 价值2
2022-03-14 13:00:00 AMRO 3
2022-03-14 13:10:00 AMRO 4
2022-03-14 13:20:00 BTYW 5
2022-03-14 13:30:00 商城 6
2022-03-14 13:40:00 AMRO 7
2022-03-14 13:50:00 CHSP 8
2022-03-14 14:00:00 AMRO 40
2022-03-14 14:10:00 AMRO 50
2022-03-14 14:20:00 德居 60
2022-03-14 14:30:00 AMRO 70
2022-03-14 14:40:00 AMRO 80
2022-03-14 14:50:00 CHSP 90

我想在 40% 的行的“Value 1”中的值的尾部添加一个空格和数字 1,但随机进行一些操作,以便结果如下所示:

日期 价值1 价值2
2022-03-14 13:00:00 AMRO 1 3
2022-03-14 13:10:00 AMRO 1 4
2022-03-14 13:20:00 BTYW 5
2022-03-14 13:30:00 商城 6
2022-03-14 13:40:00 AMRO 7
2022-03-14 13:50:00 CHSP 1 8
2022-03-14 14:00:00 AMRO 40
2022-03-14 14:10:00 AMRO 50
2022-03-14 14:20:00 德居1 60
2022-03-14 14:30:00 AMRO 1 70
2022-03-14 14:40:00 AMRO 80
2022-03-14 14:50:00 CHSP 90

是否有一种简单的方法可以做到这一点,以便如果我想更改在将来的实例中修改的行的百分比,我可以?

感谢您的宝贵时间。

r append
1个回答
0
投票

您可以对一定比例的观测值进行采样(在本例中为 0.4),然后为这些观测值在

Value1
后面附加 1。您可以通过将这部分代码中的 .4 更改为其他值来更改附加 1 的比例:
round(nrow(tib))*.4

library(dplyr)
tib <- tibble::tribble(
~Date,  ~Value1,    ~Value2,
"2022-03-14 13:00:00",  "AMRO", 3,
"2022-03-14 13:10:00",  "AMRO", 4,
"2022-03-14 13:20:00",  "BTYW", 5,
"2022-03-14 13:30:00",  "MALL", 6,
"2022-03-14 13:40:00",  "AMRO", 7,
"2022-03-14 13:50:00",  "CHSP", 8,
"2022-03-14 14:00:00",  "AMRO", 40,
"2022-03-14 14:10:00",  "AMRO", 50,
"2022-03-14 14:20:00",  "DEJU", 60,
"2022-03-14 14:30:00",  "AMRO", 70,
"2022-03-14 14:40:00",  "AMRO", 80,
"2022-03-14 14:50:00",  "CHSP", 90)
rows <- sample(1:nrow(tib), round(nrow(tib))*.4, replace=FALSE)
tib <- tib %>% 
  mutate(Value1 = ifelse(row_number() %in% rows, paste0(Value1, " 1"), Value1))

tib
#> # A tibble: 12 × 3
#>    Date                Value1 Value2
#>    <chr>               <chr>   <dbl>
#>  1 2022-03-14 13:00:00 AMRO        3
#>  2 2022-03-14 13:10:00 AMRO        4
#>  3 2022-03-14 13:20:00 BTYW        5
#>  4 2022-03-14 13:30:00 MALL        6
#>  5 2022-03-14 13:40:00 AMRO 1      7
#>  6 2022-03-14 13:50:00 CHSP 1      8
#>  7 2022-03-14 14:00:00 AMRO 1     40
#>  8 2022-03-14 14:10:00 AMRO       50
#>  9 2022-03-14 14:20:00 DEJU 1     60
#> 10 2022-03-14 14:30:00 AMRO       70
#> 11 2022-03-14 14:40:00 AMRO       80
#> 12 2022-03-14 14:50:00 CHSP       90

创建于 2023-08-11,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.