R语言实战第3章-Basic data management

Creating new variables

Arithmetic operators

 

将新的变量纳入到原始数据框架中,如图两种方法:

transform()更加简便

Recoding variables

要重新编码数据,可以使用R的一个或多个逻辑运算符(见表3.3)。逻辑运算符是返回TRUE或FALSE的表达式。

 

The statement variable[condition] <- expression will only make the assignment when condition is TRUE.

leadership$age[leadership$age == 99] <- NA

leadership$agecat[leadership$age > 75] <- "Elder"

leadership$agecat[leadership$age >= 55 & leadership$age <= 75] <- "Middle Aged" leadership$agecat[leadership$age < 55] <- "Young"

This code can be written more compactly as follows:

leadership <- within(leadership,{

agecat <- NA

agecat[age > 75] <- "Elder"

agecat[age >= 55 & age <= 75] <- "Middle Aged"

agecat[age < 55] <- "Young" })

The within() function is similar to the with() function (section 2.2.4), but it allows you to modify the data frame.

首先创建变量agecat,并将数据帧的每一行设置为缺失。然后依次执行大括号内的剩余语句。请记住agecat是一个字符变量;您很可能希望将其转化为有序因子,如2.2 . 5节所述。

transform与within的区别:【R语言】:transform函数与with/within函数 - 知乎 (zhihu.com)

1.函数transform:

作用:为原数据框添加新的列,可以改变原变量列的值,也可以赋值NULL删除列变量

用法:transform(‘data’, ...)

data就是要修改的数据,'...'代表要进行的修改

2.函数with/within

作用:修改原始数据(不仅限于数据框),添加新的列以及改变原变量列的值等

用法:with/within(data, expr, ...)

expr是指R语言的表达式,'...'代表要进行的修改

with函数的返回值是原语句的返回值。within跟with功能相同,但返回值不同,within会返回所有修改生效后的原始数据结构(列表、数据框等)。

总结:transform函数只能用于数据框改变,而within函数应用更宽泛一些,可以用于除数据框之外的数据对象的改变。

R语言中expr表达式执行一条语句占一行,执行多条语句需要换行;如果需要多条语句在同一行,则中间应当用分号;隔开。

transform(数据框名, 对数据框的一系列修改),这些修改中间用逗号分隔,别换行。

within(数据框名, {修改1;修改2;修改3;......})或者within(数据框名,{修改1

修改2

修改3})

通过一个简单的例子,说明transform函数与within函数的功能和用法:

#创建数据框mydata,x1和x2是mydata的两个列向量
mydata <- data.frame(x1 = c(2, 2, 6, 4), x2 = c(3, 4, 2, 8))

#利用transform函数对数据框mydata增加两个变量(列向量)sumx和meanx,并把结果存储在数据框mydata中
mydata <- transform(mydata, sumx = x1 + x2, meanx = (x1 + x2)/2)

#利用within函数,expr表达式执行一条语句占一行,执行多条语句需要换行
mydata <- within(mydata, {sumx = x1 + x2
                         meanx = (x1 + x2)/2})

#或者多条语句在同一行,则中间应当用分号;隔开
mydata <- within(mydata, {sumx = x1 + x2; meanx = (x1 + x2)/2})

#也可以这样~
library(tidyverse)
tbl_df(mydata)%>%mutate(sumx=x1+x2,meanx=(x1+x2)/2)

with与within的区别:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值