如何在 R 的数据框中创建具有三个级别的因子?

克莱德森·莱姆斯

我为 19 个不同的距离创建了一个因子,我需要确定三个级别,一个用于直接影响 (DirImp),另一个用于我各自的间接影响距离,(Dist="1km_","2km_","3km_","4km_" ,"5km_","6km_","7km_","8km_","9km_","10km_","10km","20km","30km","40km","50km","60km"," 70km") 和其他到我的控制区域 (Contrl),从距离 0 (DirImp) 开始,每公里增加公里直到达到 10 公里,从这一点开始,它每 10 公里增加一次,直到达到 70 公里,并且最后一个距离是控制。

因此,为了澄清,在我的DataFrame一列 (Dist) 中,包含这些距离和其他具有其他信息的列,我使用此代码将其转换为一个因子:

column Dist estructure:


levels(MY.DTAFRAME$Dist)
[1] "DirImp"   "10km"  "10km_" "1km_"  "20km"  "2km_"  "30km" 
[8] "3km_"  "40km"  "4km_"  "50km"  "5km_"  "60km"  "6km_" 
[15] "70km"  "7km_"  "8km_"  "9km_", "control" 

How I would like it to be:
level 1 = Direct impact ("DirImp")
level 2 = Distances ("1km_","2km_","3km_","4km_","5km_","6km_","7km_","8km_","9km_","10km_","10km","20km","30km","40km","50km","60km","70km")
level 3 = Contrl Area  ("Contrl")

Column Dist = ("DirImp", "1km_","2km_","3km_","4km_","5km_","6km_","7km_","8km_","9km_","10km_","10km","20km","30km","40km","50km","60km","70km", "control")

  MY.DATAFRAME$DistFact <- factor(MY.DATAFRAME$Dist, level ordered = TRUE)


  levels(MY.DTAFRAME$DistFact)
  [1] "DirImp"   "10km"  "10km_" "1km_"  "20km"  "2km_"  "30km" 
  [8] "3km_"  "40km"  "4km_"  "50km"  "5km_"  "60km"  "6km_" 
  [15] "70km"  "7km_"  "8km_"  "9km_", "control" 
瑞·巴拉达斯

问题是否类似于以下内容?

forcats::fct_collapse(y, 
                      DirImp = grep("DirImp", y, ignore.case = TRUE, value = TRUE), 
                      Distances = grep("km", y, ignore.case = TRUE, value = TRUE),
                      Control = grep("control", y, ignore.case = TRUE, value = TRUE)
                      )
# [1] Distances Distances Distances Distances Distances Distances
# [7] Distances Distances Distances Distances Distances Distances
#[13] Distances Distances Distances Distances Distances Distances
#[19] Distances Distances Distances Distances Distances Distances
#[25] Distances Distances Distances Distances Control   Distances
#Levels: DirImp Distances Control

或者,也许更具可读性,

grep_tmp <- function(pattern, x){
  grep(pattern, x, ignore.case = TRUE, value = TRUE)
}

forcats::fct_collapse(y,
                      DirImp = grep_tmp("DirImp", y), 
                      Distances = grep_tmp("^\\d+km", y),
                      Control = grep_tmp("control", y)
                      )

数据

随着问题中的levels发布,这里是示例数据。

set.seed(1234)
x <- scan(text = '"DirImp"   "10km"  "10km_" "1km_"  "20km"  "2km_"  "30km" 
"3km_"  "40km"  "4km_"  "50km"  "5km_"  "60km"  "6km_" 
"70km"  "7km_"  "8km_"  "9km_" "control"', what = character())

y <- factor(sample(x, 30, TRUE), levels = x)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用URL中具有多个级别的zip文件在R中创建数据框?

如何从R中的数据框中删除包含唯一因子级别的行?

R - 如何在数据框中每行找到三个最小值?

R上的传单:如何为数据框中的每个因子级别创建图层和颜色

如何在 R 中绘制具有不同级别的可折叠树?

如何在R中创建具有动态列长度的数据框

如何在R中创建具有指定列和行数的空数据框?

如何使用具有三个继承级别的节

如何通过R中的三个变量对数据框进行排序和计数?

如何在 R 中的多列中执行具有三组、三个时间点和一个因变量的双向混合方差分析

如何在R Studio中从三个频率列组创建维恩图

如何在 R 数据查看器中显示带有因子的数据框?

如何为R中具有三个类的randomForest模型绘制ROC曲线?

如何生成嵌套 ifelse() 语句来评估 R 中混淆矩阵的三个分类二进制级别的预测

如何创建过程从具有用户插入数据的三个表中检索数据

如何从R中少于2个唯一级别的数据框中删除列

如何将行聚合为三个级别的因子变量?

R:如何在数据框中创建一个新列,从基数上计算观察值对变量具有相同值的次数

如何在R数据框中聚合具有两个不同功能的两个不同列

如何在具有三个字段的SQL中执行数据透视?

如何在具有相同结构的三个 XML 文件中写入数据?

如何在一列中比较两个具有不同精度级别的数据框

如何在 R 中绘制 10 年数据的三个变量(如 gdp、通货膨胀、失业)

如何在R中按预定的因子级别顺序对数据帧进行排序?

如何在x轴上具有两个类别的R中手动创建箱形图

如何在R的数据框中创建连续的序列列?

如何将数据帧因子列扩展为R中每个级别的一列?

如何在R中获得每三个月的第三个星期五

如何在 R 中着色数据框