R: 给 dataframe 的某列赋值、分组、因子化

本文介绍了如何在R中对data.frame的某一列进行赋值、分组和因子化。通过复制列,使用常规赋值或自定义函数,可以实现对numeric和character类型的列进行操作。文章还探讨了使用逻辑向量和位置向量作为筛选条件的效率,并给出了扩展应用示例,包括按两列分组的情况。
摘要由CSDN通过智能技术生成

###################################################

问题:给某一列赋值、分组、分类、因子化   18.4.24

         如何把 data.frame 中的某一列,赋值、即分组分类,,

解决方案:

         先 复制 要赋值的这一列,

         iris1<- iris;  range(iris1$Sepal.Length)    #[1] 4.3  7.9 得到数据范围,为下面分段

         方法一: 常规赋值,,可适用于被赋值列为 numeric、character 均可。为 numeric 时可用< > >= <= 等,character 时可用 == 方式。

iris1$Sepal.Length_fuzhi1 <- iris1$Sepal.Length;

str(iris1)

iris1$Sepal.Length_fuzhi1[iris1$Sepal.Length < 5] <- 1  #条件用 iris1$Sepal.Length 列,而不用新复制的列,是为了防止犯错    

iris1$Sepal.Length_fuzhi1[iris1$Sepal.Length >= 5 & iris1$Sepal.Length < 6] <- 2

iris1$Sepal.Length_fuzhi1[iris1$Sepal.Length >= 6 & iris1$Sepal.Length < 7] <- 3

iris1$Sepal.Length_fuzhi1[iris1$Sepal.Length >= 7] <- 4;

str(iris1)    

  

         方法二: 自定义函数去赋值,,用于被赋值列可以比较大小,如 numeric 型,

iris1<- iris
num_assign <- function(temp_df,col_name,clas,newname){ ##此函数为通用函数。。对可以比大小的列进行赋值的函数。 # temp_data 即要处理的数据框的名字,col_name为数据框中要处理的列名。 # clas为分组界限组成的向量。。newname为赋值后的新产生的列的列名。、。。。 temp_df[["temp1"]] = temp_df[["temp"]] <- temp_df[[col_name]]; CI <- rep("a",length(clas)+1); #CI 用来显示 原来值与新赋的值 之间对应关系。 for(i in 1:length(clas)) { if(i == 1){ #得到第一个区间 temp_df[["temp"]][temp_df[["temp1"]] < clas[i]] <- i CI[i] <- paste("<"
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值