r - 重新编码数据框中的一组列
问题描述
我在数据框中有一组列,我想通过以下方式重新编码(这里是一个带有一个变量的示例):
completed_survey$little_control<-car:: recode(completed_survey$little_control,
"1=7;2=6;3=4;4=4;5=3;6=2;7=1")
为了提高效率并且不对所有不同的变量重复相同的代码,我正在考虑使用一个函数,并且我正在考虑这样的事情:
recoding <- function(x) {
car :: recode(completed_survey$., "1=7;2=6;3=4;4=4;5=3;6=2;7=1")
}
但是,一旦应用于数据框中的变量,就会导致以下错误:
Error in `$<-.data.frame`(`*tmp*`, little_control, value = numeric(0)) : replacement has 0 rows, data has 139334
我想这是功能规范中的问题。如何引用数据框中的任何通用列变量,以便应用重新编码功能?
解决方案
有几个问题(可能是拼写错误)-1)不必要的空间,2)函数内部没有使用函数参数。下面的函数有两个参数 - 一个用于数据,下一个用于作为字符串的列名
recoding <- function(data, colName) {
car::recode(data[[colName]], "1=7;2=6;3=4;4=4;5=3;6=2;7=1")
}
recoding(completed_survey, "little_control")
并有一个可重复的例子
recoding(mtcars, "carb")
#[1] 4 4 7 7 6 7 4 6 6 4 4 4 4 4 4 4 4 7 6 7 7 6 6 4 6 7 6 6 4 2 8 6
推荐阅读
- android - 我想从 Authenticator 类中的 okhttp3.Response 生成自定义错误
- spring-amqp - 使用 Spring AMQP 将消息连同错误代码一起发布到 DLX
- javascript - 防止服务器端 Blazor 在 EditForm 中触发 onsubmit
- serena - 在不知道物品规格的情况下从 Serena Dimensions 获取物品
- java - HttpMessageNotWritableException - 无法在联接表中写入 JSON
- elasticsearch - Packetbeat 未指向写入索引
- android - Snackbar 不显示,每次打开应用程序都会崩溃
- ios - 使用部分可见的上一个和下一个项目滚动时将集合视图居中
- javascript - 查找字符串中最长的回文并返回 Javascript 中最长的单个单词
- azure - 如何在 Google 聊天和 Azure devops 之间创建 Webhook