当前位置: 首页 > 知识库问答 >
问题:

使用mutate over multiples列和for循环来重新编码值

傅乐湛
2023-03-14

我需要基于另一个表重新编码一个数据帧的多列上的值。

 id <- c(1, 2, 3)
 departure <- c(1, 2, NA)
 arrival <- c(3, 1, 2)
 transit <- c(NA,NA,1)
dataset <- data.frame(id, departure, arrival, transit)
geo_id <- c(1, 2, 3)
place_name <- c("Paris", "Nantes", "London")
geocode <- data.frame(geo_id, place_name)
var <- c("departure", "arrival", "transit") #the columns that should by recode (must be a vector with my  real data)

for (i in var) {
  print(i)
  dataset <- dataset %>% 
  mutate(i = geocode$place_name[match(i, geocode$geo_id)])

}

mutate创建一个新列调用i!如何避免这一点?

共有1个答案

屠坚壁
2023-03-14

使用DPLYR,您可以:

dataset %>%
 mutate_at(vars(one_of(var)), ~ geocode$place_name[match(., geocode$geo_id)])

  id place1 place2 place3
1  1  Paris London   <NA>
2  2 Nantes  Paris   <NA>
3  3   <NA> Nantes  Paris

或添加tidyr:

dataset %>%
 pivot_longer(one_of(var)) %>%
 left_join(geocode, by = c("value" = "geo_id")) %>%
 select(-value) %>%
 pivot_wider(names_from = name, values_from = place_name)
 类似资料:
  • 关于如何使用for和while循环将值列表到空列表,我有两种方法。 例1。创建一个函数,该函数接受用户的输入,并在列表中列出十进制正值,直到用户插入负值。然后清单结束,最后一个值应该是这个负值。输出应该是什么样子的: 在列表中添加数字:1.5在列表中添加数字:5.2在列表中添加数字:6在列表中添加数字:-2列表:[1.5,5.2,6.0,-2.0] 我的选拔赛没成功 示例2关于将for循环和ran

  • 我有这个代码,它是用for循环实现的。我想用一个字母来写。流和。map()函数。我试着用这个。map()函数。但不幸的是,我得到了以下错误: 不兼容的类型。必填列表 这里是旧代码: 这是我使用。地图() 有没有关于我如何解决这个问题的建议?或者我应该注意什么?

  • 我想在for循环中将列表写入csv文件,每次都在不同的列中。例如,第一次迭代生成一个list=[1,2,3,4,5],第二次迭代生成list=[1,2,3]。我想要输出。csv看起来像: 我得到了以下代码: 相反,输出看起来像这样: 上面所做的是继续编写第一列,并且在下一次迭代中不会更改为新列。如何让python这样做?

  • 问题内容: 以下是提供输出的代码段:。由于访问列表中的数字3,我期望获得输出。在线给出的解释是“每次迭代中更改的价值”,但我不太了解如何或为什么。任何解释都很好! 问题答案: 这里发生的是一个列表在循环过程中发生了变异。 让我们考虑以下代码片段: 输出为: 每次迭代: 从内部指针当前指向的位置读取值 立即将其分配给列表中的最后一个元素 在最后一个元素打印在标准输出上之后 就像这样: 内部指针指向第

  • 问题内容: 我有一个ng-repeat返回对象数组,如下所示: 我想拉出对象并将其推入另一个数组,以便将其格式化为: 目标是在数组上使用orderBy。是否可以将JSON重组为这种格式,然后访问数据? 这是我的观点供参考: 我的JSON格式: 问题答案: 只是详细说明我的回答:- 您可以通过这种方式将各个月分散的阵列合并为1个阵列。 ==>将给您属性中的月份到一个数组 ==>您传入月份数组,然后从

  • 我们经常需要重复执行一些操作。 例如,我们需要将列表中的商品逐个输出,或者运行相同的代码将数字 1 到 10 逐个输出。 循环 是一种重复运行同一代码的方法。 “while” 循环 while 循环的语法如下: while (condition) { // 代码 // 所谓的“循环体” } 当 condition 为真时,执行循环体的 code。 例如,以下将循环输出当 i < 3 时的