r语言 - 对数据框列的每个单元格中的值进行加权的功能,每个单元格都有不同的规则



我有一个数据框,其中包含从原始数据文件中提取的直接标点符号。所有扣除的标点符号都有不同的比例,因此不容易比较它们,因为它们具有不同的最大值和最小值。我想将标点符号称重为 0 到 5 的等级,因此在绘制措施的那一刻,可以相互比较它们。使用按单个数字(例如:df$num3 <- df$num2 - df$num1(操作行值的方法,所有度量值都将获得意外值,因为每个度量值都有不同的最大值。我实际上正在尝试将每个结果除以最大可能值(实际上是 120、45、30(,然后将商乘以 5。

因此,这是括号中最大值和最小值的数据框:

Variable Puntuación
1 Capacidades (24-120)         85
2    Planeación (9-45)         30
3     Relaciones(6-30)         20

目标是编写一个函数,允许我执行以下操作并在同一列中存储/更新结果:

(row 1- column 2) /120 * 5 , (row 2- column 2) /45 * 5, (row 3- column 2) /30 * 5

提前感谢您为我提供的任何指导

似乎使用以下代码完成了一个可能的解决方案,该解决方案不是很好且完全自动化的。

tpg$Puntuación[1] <- (as.numeric(as.character(tpg[1,2]))/120*5)

tpg$Puntuación[2] <- (as.numeric(as.character(tpg[2,2]))/45*5)

tpg$Puntuación[2] <- (as.numeric(as.character(tpg[3,2]))/30*5)

我想知道是否有办法使用带有if elsefor来更有效地执行此操作。

再次感谢

我不完全确定你的问题,但我认为重点是将字符串中的数据转换为数字数据。出于这个原因,我会使用以下方法。

library(tidyverse)
glimpse(data)

。这给了:

Observations: 3
Variables: 2
$ Variable   <chr> "Capacidades (24-120)", "Planeación (9-45)", "Relaciones…
$ Puntuación <dbl> 85, 30, 20

然后:

data_new <- data %>% 
separate(
col = Variable, 
into = c("ID", "Value"), 
convert = F, 
sep = "\(") %>% 
separate(
col = Value, 
into = c("Value1", "Value2"), 
convert = F, 
sep = "\-") %>% 
mutate(
Value1 = as.integer(Value1),
Value2 = as.integer(
str_sub(
Value2, start = 1L, end = -2L
)
)
)
glimpse(data_new)

。这给了:

Observations: 3
Variables: 4
$ ID         <chr> "Capacidades ", "Planeación ", "Relaciones"
$ Value1     <int> 24, 9, 6
$ Value2     <int> 120, 45, 30
$ Puntuación <dbl> 85, 30, 20

从那里,您可以使用 tidyversedplyr中的mutate函数(如上所述(进行剩余的计算。

我希望这对你有所帮助。

最新更新