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之间的任何值
有什么建议吗?我留下的唯一想法是按原样创建数据帧,并在dataframe函数之外手动更改year1Premium的val值。不确定它是否有效

i、 e


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