楼主: tylerma3223
66440 6

[问答] R语言怎么给变量取对数? [推广有奖]

  • 0关注
  • 16粉丝

已卖:4976份资源

教授

3%

还不是VIP/贵宾

-

威望
1
论坛币
222362 个
通用积分
6.5552
学术水平
42 点
热心指数
72 点
信用等级
44 点
经验
19872 点
帖子
512
精华
0
在线时间
925 小时
注册时间
2013-1-28
最后登录
2023-11-29

楼主
tylerma3223 学生认证  发表于 2015-12-11 16:36:11 |AI写论文
2论坛币
程序:
  1. setwd("D:\\DATA")
  2. library(xlsx)          # for xlsx data
  3. dat <- read.xlsx(file='TotalData.xlsx', sheetName='OK')
  4. dat.lm<-lm(log(GDP)~log(PK)+log(PE)+log(PL)+log(PE)*log(PL)
  5.            +log(PE)*log(PK)
  6.            +log(PK)*log(PL), data = dat)
  7. summary(dat.lm)
复制代码
但是,这样太麻烦了,我想写一句话,类似于
  1. LGDP<-log(GDP)
  2. LPE<-log(PE)
复制代码
然后再做回归就方便多了,请问这句话怎么写?
谢谢各位专家。

最佳答案

万人往LVR 查看完整内容

只能部分简化,左边必须有美元号,右边不需要。
关键词:R语言 取对数 Library BRARY Data library 程序

沙发
万人往LVR 在职认证  发表于 2015-12-11 16:36:12
tylerma3223 发表于 2015-12-14 11:13
这个办法确实能够实现,但是,对dat这个表操作时,能不能来句命令。大约是

否则,像下面这样每个变量前 ...
只能部分简化,左边必须有美元号,右边不需要。
  1. attach(dat)
  2. dat$LGDP <- log(GDP)
  3. ...
  4. ...
  5. detach(dat)
复制代码


藤椅
万人往LVR 在职认证  发表于 2015-12-11 16:55:58
dat$LGDP <- log(with(dat,GDP))

板凳
suimong 发表于 2015-12-12 00:50:42
题主如果想给dat中每一列都取log的话可以这么写:
  1. library(dplyr)
  2. x %>%
  3.   mutate_each(funs(log)) %>%
  4.   setNames(paste("L",colnames(.), sep = "")) ->
  5.   ldat
复制代码

报纸
tylerma3223 学生认证  发表于 2015-12-14 11:13:33
万人往LVR 发表于 2015-12-11 16:55
dat$LGDP
这个办法确实能够实现,但是,对dat这个表操作时,能不能来句命令。大约是
  1. with dat
  2.     区间里面的操作都节约了dat$符号,
  3. end with
复制代码

否则,像下面这样每个变量前面都得写一遍dat$ 很麻烦,看着眼花缭乱。
  1. # Shadow elasticity of substitution
  2. dat$SES_LK<-(dat$SL/(dat$SL+dat$SK))*dat$MES_LK +  (dat$SK/(dat$SL+dat$SK))*dat$MES_KL
  3. dat$SES_KL<-(dat$SK/(dat$SK+dat$SL))*dat$MES_KL +  (dat$SL/(dat$SK+dat$SL))*dat$MES_LK
  4. dat$SES_KE<-(dat$SK/(dat$SK+dat$SE))*dat$MES_KE +  (dat$SE/(dat$SK+dat$SE))*dat$MES_EK
  5. dat$SES_EK<-(dat$SE/(dat$SE+dat$SK))*dat$MES_EK +  (dat$SK/(dat$SE+dat$SK))*dat$MES_KE
  6. dat$SES_EL<-(dat$SE/(dat$SE+dat$SL))*dat$MES_EL +  (dat$SL/(dat$SE+dat$SL))*dat$MES_LE
  7. dat$SES_LE<-(dat$SL/(dat$SL+dat$SE))*dat$MES_LE +  (dat$SE/(dat$SL+dat$SE))*dat$MES_EL
复制代码


地板
tylerma3223 学生认证  发表于 2015-12-14 14:54:11
万人往LVR 发表于 2015-12-11 16:36
只能部分简化,左边必须有美元号,右边不需要。
非常感谢这位朋友,

7
我学的统计 学生认证  发表于 2018-3-27 00:48:52
哦 各位都比我厉害啊  我写的很复杂啊

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 08:38