R 在一列上运行,但行之间的数据类型不同
我目前正在生成这样的数据帧-R 在一列上运行,但行之间的数据类型不同,r,R,我目前正在生成这样的数据帧- modelOption_RT <- data.frame( typeID = rep(c(2,1), each = 4), ID = c(1:8), modelOption = c("good", "avg", "bad", "marginCost", "year1Premium")[c(1,2,3,4,5,1,2,3)], descrip = c("Favorable", "Average", "Adverse", "Margin Cost"
modelOption_RT <- data.frame(
typeID = rep(c(2,1), each = 4),
ID = c(1:8),
modelOption = c("good", "avg", "bad", "marginCost", "year1Premium")[c(1,2,3,4,5,1,2,3)],
descrip = c("Favorable", "Average", "Adverse", "Margin Cost", "Year 1 Premium")[c(1,2,3,4,5,1,2,3)],
# Generate random values for model options
vals = sort(
round(
runif(5, min=0, max=1),
digits = 2
), decreasing = TRUE)[c(1,2,3,4,5,1,2,3)]
)
> modelOption_RT
typeID ID modelOption descrip vals
1 2 1 good Favorable 0.61
2 2 2 avg Average 0.36
3 2 3 bad Adverse 0.24
4 2 4 marginCost Margin Cost 0.11
5 1 5 year1Premium Year 1 Premium 0.01
6 1 6 good Favorable 0.61
7 1 7 avg Average 0.36
8 1 8 bad Adverse 0.24
modelOption\u RT modelOption\u RT
typeID模型选项描述VAL
1 2 1良好有利0.61
2平均值0.36
3.2.3不良不利0.24
4 2 4保证金成本保证金成本0.11
5.1.5年1月1日保费0.01
616良好有利0.61
717平均值0.36
8 1 8不良不利影响0.24
这只存在一个问题-当前val列中的所有值都表示一个百分比,但是:
- year1Premium的VAL列应为货币,因此0和100000000之间的任何值
modelpoption\u RT[modelpoption\u RT$modelpoption==“year1Premium”,“vals”]您可以使用dplyr
的mutate()
和replace()
set.seed(96311)
图书馆(dplyr)
模型选项\u RT%
变异(VAL=replace(VAL,modelOption==“year1Premium”,
runif(1,最小值=0,最大值=10000)))
模型选项\u RT
#typeID模型选项描述VAL
#1良好有利0.95
#2平均值0.66
#3 1 3不良不利影响0.56
#4 1 4保证金成本保证金成本0.49
#5.2 5年1年前1年保费6032.65
#6 2 6良好有利0.32
#7 2 7平均值0.17
#8 2 8不良不利影响0.03
modelOption_RT[modelOption_RT$modelOption == "year1Premium", "vals"] <- runif(1, min=0, max=10000)
set.seed(96311)
library(dplyr)
modelOption_RT <- data.frame(
typeID = rep(1:2, each = 4),
ID = 1:8,
modelOption = c("good", "avg", "bad", "marginCost",
"year1Premium")[c(1:5, 1:3)],
descrip = c("Favorable", "Average", "Adverse", "Margin Cost",
"Year 1 Premium")[c(1:5, 1:3)],
vals = sort(round(runif(8, min=0, max=1), digits = 2), decreasing = TRUE)) %>%
mutate(vals = replace(vals, modelOption == "year1Premium",
runif(1, min=0, max=10000)))
modelOption_RT
# typeID ID modelOption descrip vals
# 1 1 1 good Favorable 0.95
# 2 1 2 avg Average 0.66
# 3 1 3 bad Adverse 0.56
# 4 1 4 marginCost Margin Cost 0.49
# 5 2 5 year1Premium Year 1 Premium 6032.65
# 6 2 6 good Favorable 0.32
# 7 2 7 avg Average 0.17
# 8 2 8 bad Adverse 0.03