我有一个dataframe1告诉每个值的含义,像这样
价值意义1红2个蓝色的3绿色... ...
和我有另一个像这样的大数据框架Id色重宽度1 1 98 32... ... ... ...
我试着写一个函数,然后映射到我的dataframe2和改变我的颜色列。我的代码是
color<-function(x){
for (i in 1:nrow(dataframe1)){
if(x == dataframe1$value[i]){
x = dataframe1$meaning[i]
}
}
map(dataframe2$color ,color)
得到null有人能帮我一下吗?我知道我可以做for循环来改变值,但是数据集太大了,这需要很长时间。
这是你想做的吗,即根据颜色代码将描述从数据框1附加到数据框2 ?
这是一个避免循环的矢量化解决方案。
library(tidyverse)
data_df <- tribble(
~id, ~colour, ~weight, ~width,
1, 1, 20, 30,
2, 2, 30, 20
)
colour_df <- tribble(
~value, ~meaning,
1, "red",
2, "blue"
)
data_df |>
left_join(colour_df, by = c("colour" = "value"))
#> # A tibble: 2 × 5
#> id colour weight width meaning
#> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 1 1 20 30 red
#> 2 2 2 30 20 blue
由reprex包(v2.0.1)创建于2022-06-07