r - 在 R 的循环中重命名采样属性
问题描述
我想更改从循环中采样的列中的属性名称。在第一个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 次,因此我需要一个解决每个新样本重量的解决方案。谢谢!
解决方案
我们可以用
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))
推荐阅读
- java - 按钮被编译器识别为空
- python - 注册人脸识别
- javascript - css display:block 属性错误或行为不同
- javascript - 如何将 Meteor Mobile App 的服务器端设置为在将安装该应用程序的设备上运行
- php - & 符号和 call_user_func_array(array($stmt, "bind_param"), $value) 在 php 中做什么?
- python - 实现抽象属性而不在 child 中重新定义 __init__
- java - 添加子弹物理后Libgdx游戏崩溃
- python - 如何在 Raspberry Pi 上直接启动单个 GUI
- java - JavaFX TreeView 动作监听器
- reactjs - 钩子中的先前状态