【问题标题】:Rename sampled attributes within a loop in R [duplicate]在R中的循环中重命名采样属性[重复]
【发布时间】:2021-06-25 23:51:10
【问题描述】:

我想更改从循环中采样的列中属性的名称。在第一个for 循环中,我从我的整个数据集中抽取一个样本,在第二个for 循环中,将此样本放在我创建的一个空数据框中。除了重命名代码外,一切都按我的需要运行。我的重命名解决方案几乎可以工作,但我需要按从 1 到 9 的顺序重命名。

使用虚拟数据:

AllFruit <- read.table("AllFruitData.txt")

for (i in 1:1000) {

Fruit.sample <- sample(AllFruit$Weight, size = 9, replace = TRUE) #create a sample based on weight of fruit

WeightSample <- NULL #create an empty dataframe

for (k in 1:length(Fruit.sample)) {

WeightSample = rbind(WeightSample, AllFruit[which(AllFruit$Weight == Fruit.sample[k]),])
}
}

这会产生什么:

WeightSample

Type    Color   Weight 
Apple   Red     5
Banana  Yellow  5
Apple   Red     5
Apple   Red     9
Banana  Yellow  9
Orange  Orange  7
Pear    Green   3
Banana  Yellow  8
Pear    Green   6
Pear    Green   2
Banana  Yellow  1
Pear    Green   1
Pear    Green   4

我需要什么:

Type    Color   Weight 
Apple   Red     1
Banana  Yellow  1
Apple   Red     1
Apple   Red     2
Banana  Yellow  2
Orange  Orange  3
Pear    Green   4
Banana  Yellow  5
Pear    Green   6
Pear    Green   7
Banana  Yellow  8
Pear    Green   8
Pear    Green   9

要重命名我的权重列中的权重,我推断我需要更改箭头的右侧,因为当我将其添加到 rbind 行之后的第二个循环中时:

WeightSample[WeightSample$Weight == Fruit.sample[k], "Weight"] <- 13

我明白了:

Type    Color   Weight 
Apple   Red     13
Banana  Yellow  13
Apple   Red     13
Apple   Red     13
Banana  Yellow  13
Orange  Orange  13
Pear    Green   13
Banana  Yellow  13
Pear    Green   13
Pear    Green   13
Banana  Yellow  13
Pear    Green   13
Pear    Green   13

我尝试了一些选项,例如seq(1:9),但出现替换错误。由于我要采样 1000 次,因此我需要一个解决每个新样本重量的解决方案。谢谢!

【问题讨论】:

  • 你好,老兄!您可以使用dput(AllFruit) 并将输出复制粘贴到您的问题中吗?这将允许人们轻松加载您使用的完全相同的数据并更轻松地回答您的问题。有关详细信息,请参阅此链接:stackoverflow.com/questions/5963269/…

标签: r for-loop rename


【解决方案1】:

我们可以使用

WeightSample$Weight <- with(WeightSample, match(Weight, unique(Weight)))

-输出

 WeightSample
     Type  Color Weight
1   Apple    Red      1
2  Banana Yellow      1
3   Apple    Red      1
4   Apple    Red      2
5  Banana Yellow      2
6  Orange Orange      3
7    Pear  Green      4
8  Banana Yellow      5
9    Pear  Green      6
10   Pear  Green      7
11 Banana Yellow      8
12   Pear  Green      8
13   Pear  Green      9

数据

WeightSample <- structure(list(Type = c("Apple", "Banana", "Apple", "Apple", 
"Banana", "Orange", "Pear", "Banana", "Pear", "Pear", "Banana", 
"Pear", "Pear"), Color = c("Red", "Yellow", "Red", "Red", "Yellow", 
"Orange", "Green", "Yellow", "Green", "Green", "Yellow", "Green", 
"Green"), Weight = c(5L, 5L, 5L, 9L, 9L, 7L, 3L, 8L, 6L, 2L, 
1L, 1L, 4L)), class = "data.frame", row.names = c(NA, -13L))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2019-12-26
    • 2018-08-02
    • 2018-07-16
    • 2021-11-30
    • 1970-01-01
    • 2014-06-17
    相关资源
    最近更新 更多