我有一个数据帧rT,它可以有任意数量的列和行。
A B C D
1 69.581 62.633 59.953 59.861
2 70.118 62.705 60.171 60.126
3 71.031 62.832 60.623 60.666
4 71.684 62.998 61.191 61.256
5 72.306 63.215 61.810 61.882
6 72.850 63.411 62.447 62.470
7 73.330 63.652 63.081 63.060
8 73.750 63.919 63.660 63.679
我想生成一个新的数据帧,delT,具有与rT相同的列数(也具有相同的列标题),有n行,其中每列是随机和均匀的,delT每列的最小值基于rT相应列的最小值和最大值。rT的最小值和最大值不一定在每列的第一行和最后一行。
例如,使用 runif:
runif(n, min = max(x) - min(x), max = 100)
其中x是rT的适当列。对于delT的A列(基于rT的A栏),runif的max(x)=73.750,min(x)=69.581。
我试过将其放入函数并使用应用程序,但无法使其工作。
使用< code>tidyverse及其< code>purrr包,您可以基于data.frame的每一列应用函数。然后,当您使用函数获得相同长度的向量时,您可以将结果再次绑定到data.frame中。
Purrr::map
允许您遍历列表,因此遍历data.frame.的列对于每一列,应用函数~runif(n, min=max(. x)-min(. x), max=100)
。由于每个结果的长度为n
,我们可以将它们绑定在一起。map_dfc
用于使用map
并给出列绑定data.frame作为结果。
rT <- data.frame(
A = c(69.581, 70.118, 71.031, 71.684, 72.306,
72.85, 73.33, 73.75),
B = c(62.633, 62.705, 62.832, 62.998, 63.215,
63.411, 63.652, 63.919),
C = c(59.953, 60.171, 60.623, 61.191,
61.81, 62.447, 63.081, 63.66),
D = c(59.861, 60.126, 60.666,
61.256, 61.882, 62.47, 63.06, 63.679)
)
library(purrr)
n <- 5
rT %>%
map_dfc(~runif(n, min = max(.x)-min(.x), max = 100))
#> # A tibble: 5 x 4
#> A B C D
#> <dbl> <dbl> <dbl> <dbl>
#> 1 5.954893 52.99178 35.314039 88.06139
#> 2 75.256292 11.50050 17.731318 92.13357
#> 3 10.511348 15.13069 90.662412 91.01179
#> 4 44.521538 98.34528 27.756598 53.75294
#> 5 27.128326 94.98931 6.512121 59.73266
n <- 10
rT %>%
map_dfc(~runif(n, min = max(.x)-min(.x), max = 100))
#> # A tibble: 10 x 4
#> A B C D
#> <dbl> <dbl> <dbl> <dbl>
#> 1 72.906857 71.907060 17.426403 66.71158
#> 2 16.310144 77.950989 57.590292 20.20146
#> 3 69.083519 83.131703 18.149709 88.18446
#> 4 27.283926 3.569011 7.818614 61.14583
#> 5 49.978554 45.326009 70.542656 20.57136
#> 6 23.625139 87.162790 69.688542 94.57557
#> 7 84.301649 53.648099 54.296879 78.02967
#> 8 9.086232 97.715472 61.867758 93.03181
#> 9 14.799283 64.542723 75.905285 82.73306
#> 10 18.165695 50.796225 12.418779 34.12631
我们可以使用l
# Set the seed for reproducibility
set.seed(123)
rt2 <- as.data.frame(
lapply(rt, function(x){
# Set the number of rows in the first argument
runif(10, min = max(x) - min(x), max = 100)
}))
rt2
A B C D
1 31.727841 95.738847 89.36341 96.443597
2 79.713069 46.036428 70.41912 90.602927
3 43.361667 68.171708 65.38332 70.251415
4 88.789441 57.812934 99.44822 80.327647
5 94.294920 11.446107 66.84688 6.185393
6 8.534725 90.111322 71.93352 49.773372
7 54.777877 25.578305 56.09675 76.768155
8 89.690409 5.437865 60.91872 24.632548
9 57.013569 33.656366 31.55106 34.421286
10 47.926847 95.508873 17.87301 26.096231
数据
rt <- read.table(text = " A B C D
1 69.581 62.633 59.953 59.861
2 70.118 62.705 60.171 60.126
3 71.031 62.832 60.623 60.666
4 71.684 62.998 61.191 61.256
5 72.306 63.215 61.810 61.882
6 72.850 63.411 62.447 62.470
7 73.330 63.652 63.081 63.060
8 73.750 63.919 63.660 63.679",
header = TRUE)
似乎很简单。在< code>lapply循环中使用您的< code>runif调用。
n <- 8
delT <- lapply(rT, function(x) runif(n, min = max(x) - min(x), max = 100))
delT <- as.data.frame(delT)
数据:
rT <-
structure(list(A = c(69.581, 70.118, 71.031, 71.684, 72.306,
72.85, 73.33, 73.75), B = c(62.633, 62.705, 62.832, 62.998, 63.215,
63.411, 63.652, 63.919), C = c(59.953, 60.171, 60.623, 61.191,
61.81, 62.447, 63.081, 63.66), D = c(59.861, 60.126, 60.666,
61.256, 61.882, 62.47, 63.06, 63.679)), .Names = c("A", "B",
"C", "D"), class = "data.frame", row.names = c("1", "2", "3",
"4", "5", "6", "7", "8"))
本文向大家介绍如何在R中创建具有随机值的矩阵?,包括了如何在R中创建具有随机值的矩阵?的使用技巧和注意事项,需要的朋友参考一下 通常,使用给定值创建矩阵,但是如果我们要创建具有随机值的矩阵,则将对矩阵函数使用常规方法。R中的随机选择可以根据我们的目标以多种方式完成,例如,如果要从正态分布中随机选择值,则将使用rnorm函数并将其存储在矩阵中,然后将其传递到矩阵函数中。 示例 输出结果 示例 输出结
我有两个pyspark数据帧 DF1 : df2: 我想向df1添加一个列Location_Id,从df2获取匹配的Id,如下所示: 我如何才能做到这一点?
本文向大家介绍如何随机化R中已经创建的向量?,包括了如何随机化R中已经创建的向量?的使用技巧和注意事项,需要的朋友参考一下 有些向量是在R中随机创建的,而有些不是在R中随机创建的,但是我们可以对这两种类型的向量进行随机化处理。随机化可确保无偏性,因此,特别是在创建具有易于改变分析结果的目标的矢量时,这是必要的。R中的随机化可以简单地借助样本函数完成。 不是随机创建的向量的随机化- 随机创建的向量的
本文向大家介绍如何基于R中的data.table的组列创建随机样本?,包括了如何基于R中的data.table的组列创建随机样本?的使用技巧和注意事项,需要的朋友参考一下 随机抽样有助于我们减少分析中的偏差。如果我们有分组数据,那么我们可能想根据分组找到随机样本。例如,如果我们有一个带有组变量的数据框,并且每个组包含十个值,那么我们可能想要创建一个随机样本,在该样本中,将从每个组中随机选择两个值。
我有一张800万行的大桌子。此表有15列带有数值,但这些值只能是0,并且只能是该列特有的另一个数值。我想根据特定值为这些列中的每一列创建两个新列。这些新值总是特定于列。 这是我的数据外观的虚拟示例: 这是我想要的输出 对应关系始终相同,即中1的值为,中2的值为,中3的值为。 我知道我可以用这样的东西 但我的真实数据有15列,需要大量的复制粘贴,有没有干净的方法?
本文向大家介绍如何在R中创建具有重复值的向量?,包括了如何在R中创建具有重复值的向量?的使用技巧和注意事项,需要的朋友参考一下 有两种方法可以创建一个在R中具有重复值的向量,但是两种方法都有不同的方法,第一种方法是重复向量的每个元素,第二种方法将元素重复指定的次数。这两种方法都使用rep函数来创建向量。 示例 请看以下示例-