我有一个数据集,我想将其中一个num_values从另一个数据框中添加新值。
这里是一个示例,创建一些df1
First.Name <- c("John", "Edgar", "Walt", "Jane")
Second.Name <- c("Doe", "Poe", "Whitman", "Austen")
num_value <- runif(4,0,1.2)
df1 <- data.frame(First.Name, Second.Name, num_value)
具有此输出
First.Name Second.Name num_value
1 John Doe 0.08137931
2 Edgar Poe 0.30245512
3 Walt Whitman 0.62542554
4 Jane Austen 0.40573224
df2定义为
upper_boundary <- seq(0,1.6,0.2)
class_value <- c(1:9)
df2 <- data.frame(upper_boundary, class_value)
并输出为
upper_boundary class_value
1 0.0 1
2 0.2 2
3 0.4 3
4 0.6 4
5 0.8 5
6 1.0 6
7 1.2 7
8 1.4 8
9 1.6 9
我想做的是在df2的第一个数据帧类值的末尾添加。 输出应类似于
First.Name Second.Name num_value class_value
1 John Doe 0.08137931 2
2 Edgar Poe 0.30245512 3
3 Walt Whitman 0.62542554 5
4 Jane Austen 0.40573224 4
预先感谢
答案 0 :(得分:0)
cut
和findInterval
将在这里工作。我将使用第二个
df1$class_value <- df2$class_value[ findInterval(df1$num_value, df2$upper_boundary) ]
df1
# First.Name Second.Name num_value class_value
# 1 John Doe 0.1908379 1
# 2 Edgar Poe 0.5045381 3
# 3 Walt Whitman 0.1925997 1
# 4 Jane Austen 0.2674465 2
答案 1 :(得分:0)
像下面一样尝试cut
df1$class_value <- df2$class_value[as.integer(cut(df1$num_value,df2$upper_boundary))+1]