, customer[,-c(10,13,20)] r语言,R语言基础编程技巧汇编 - 12

2023-11-07 21:30

本文主要是介绍, customer[,-c(10,13,20)] r语言,R语言基础编程技巧汇编 - 12,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.      文件重命名

file.rename()

2.画图的par()函数变回默认值

device.off()

3.       apply函数加额外参数

x

apply(x, 1, function(x, a) sum((x-a)^2), a =3)

4.表的合并

R中的表合并

一、merge函数外连接合并)

>merge(x = df1, y = df2, by ="CustomerId", all = TRUE)

CustomerId Product   State

1         1Toaster   

2         2Toaster Alabama

3         3Toaster   

4        4   Radio Alabama

5        5   Radio   

6        6   Radio    Ohio

左连接:

merge(x = df1, y = df2, by="CustomerId", all.x=TRUE)

CustomerId Product   State

1         1Toaster   

2         2Toaster Alabama

3         3Toaster   

4        4   Radio Alabama

5        5   Radio   

6        6   Radio    Ohio

右连接:

> merge(x = df1, y = df2, by="CustomerId", all.y=TRUE)

CustomerId Product   State

1         2Toaster Alabama

2        4   Radio Alabama

3        6   Radio    Ohio

交叉连接:

> merge(x = df1, y = df2, by = NULL)

CustomerId.x ProductCustomerId.y  State

1            1 Toaster           2 Alabama

2            2 Toaster           2 Alabama

3            3 Toaster           2 Alabama

4            4  Radio           2 Alabama

5            5  Radio           2 Alabama

6            6  Radio           2 Alabama

7            1 Toaster           4 Alabama

8            2 Toaster           4 Alabama

9            3 Toaster           4 Alabama

10           4  Radio           4 Alabama

11           5  Radio           4 Alabama

12           6  Radio           4 Alabama

13          1 Toaster           6   Ohio

14           2 Toaster           6   Ohio

15           3 Toaster           6   Ohio

16           4  Radio           6    Ohio

17           5  Radio           6    Ohio

18           6  Radio           6    Ohio

使用sqldf包查询合并表

##eg:sqldf("SELECT *FROM df1 where CUstomerId=2"

CustomerId Product

1         2Toaster

内连接:

sqldf("SELECT CustomerId, Product,StateFROM df1 JOIN df2 USING(CustomerID)"

CustomerId Product   State

1         2Toaster Alabama

2        4   Radio Alabama

3        6   Radio    Ohio

左连接:

sqldf("SELECT CustomerId,Product,State  FROM df1 LEFT JOIN df2USING(CustomerID)"

CustomerId Product   State

1         1Toaster   

2         2Toaster Alabama

3          3Toaster   

4        4   Radio Alabama

5        5   Radio   

6        6   Radio    Ohio

三、使用plyr包

library(plyr)

join(df1, df2,type="inner"

CustomerId Product   State

1         2Toaster Alabama

2        4   Radio Alabama

3         6  Radio    Ohio

Type的选项包括:inner、left、right、full(内连接,左连接,右连接,外连接)

四、使用dplyr包

library(dplyr)

> inner_join(df1,df2,by="CustomerId"

CustomerId Product   State

1         2Toaster Alabama

2        4   Radio Alabama

3        6   Radio    Ohio

> left_join(df1,df2)

Joining by: "CustomerId"

CustomerId Product   State

1         1Toaster   

2         2Toaster Alabama

3         3Toaster   

4        4   Radio Alabama

5        5   Radio   

6        6   Radio    Ohio

> semi_join(df1,df2)

Joining by: "CustomerId"

CustomerId Product

1         2Toaster

2        4   Radio

3        6   Radio

> anti_join(df1,df2)

CustomerId Product

1         1Toaster

2         3Toaster

3        5   Radio

5.      绘制图例

plot(x^2,type = "n",ylab ="y" , xlab = "x")

lines(x, lty = 1)

lines(x^2, lty = 2)

legend.txt

legend("topleft", legend =legend.txt, lty = c(1,2))

0818b9ca8b590ca3270a3433284dd417.png

6.      快速读取大规模数据

Data.table包fread函数可以快速读取大规模文件,4GB文件读取时间可以在1分钟左右。代码示例如下

require(data.table)

system.time(DT

##   user  system elapsed

##   3.12    0.01    3.22

7.       陷阱:在循环内部改变循环变量

i

for (j in 1:3) {

print(j)

if (i==0&&j==2){i

j

print(j+100)

}

}

结果竟然是

[1] 1

[1] 2

[1] 101

[1] 3

为什么不是

[1] 1

[1] 2

[1] 101

[1] 2

[1] 3   ??

循环是按照顺序来的j =1, 2, 3, 4, 5, ...

在每个循环体内,你可以对j随意赋值。但是到下一个循环开始的时候j总会变成比前一个循环多1的值,而不管前面循环体内j是多少

你开始的程序写出来其实就是

i

j

print(j)

if (i==0&&j==2) {

i

j

print(j+100)

}

j

print(j)

if (i==0&&j==2) {

i

j

print(j+100)

}

j

print(j)

if (i==0&&j==2) {

i

j

print(j+100)

}

另外一个例子:

for(j in 1:3){

print(j)

j

print(j)

j

print(j)

}

8.      函数内部访问全局域

a

x

listVar

b

print(ls())

print(ls(pos =".GlobalEnv"))

}

9.      选取上下三角矩阵

upper.tri()

lower.tri()

分别返回矩阵的上三角和下三角

10. 构造等比数列

a=10

i=seq(1,4,1)

y=a*10^i

11. 三维网格图

library(scatterplot3d)

## example 5

data(trees)

s3d

# Now adding some points to the"scatterplot3d"

s3d$points3d(seq(10,20,2), seq(85,60,-5),seq(60,10,-10), col="blue", type="h", pch=16)

# Now adding a regression plane to the"scatterplot3d"

attach(trees)

my.lm

s3d$plane3d(my.lm, lty.box ="solid")

0818b9ca8b590ca3270a3433284dd417.png

12.library与require的区别

载入需要的包时,library,reuqire都可以使用

存在区别是,require()返回一个布尔值,library返回一个地址的值

> t

Error in library("ac") : 不存在叫‘ac’这个名字的程辑包

> t

[1] "#FF0000FF""#80FF00FF" "#00FFFFFF" "#8000FFFF"

> t1

载入需要的程辑包:ac

Warning message:

In library(package, lib.loc = lib.loc,character.only = TRUE, logical.return = TRUE,  :不存在叫‘ac’这个名字的程辑包

> t1

[1] FALSE

13. 判断某个日期是星期几

#day.of.week() returns a number between 0 and6 to

#specify day of the week–0 refers toSunday.

library(chron)

print(day.of.week(2,8,2010))   #1

print(day.of.week(2,9,2010))   #2

print(day.of.week(2,10,2010))  #3

print(day.of.week(2,11,2010))  #4

print(day.of.week(2,12,2010))  #5

print(day.of.week(2,13,2010))  #6

print(day.of.week(2,14,2010))  #0

print(day.of.week(2,15,2010))  #1

14. 带数学表达式的曲线图

par(mfrow = c(1,1))

xv

yv

plot(xv,yv,type="l",xlab="",ylab="")

polygon(c(xv[xv>=1.645],1.645),c(yv[xv>=1.645],yv[xv==4]),col="grey80",border = "red")

text(2.1+0.5, dnorm(1.645), "拒绝域", adj= c(0.5, 0), cex = 0.75)

arrows(2.6,0.09,2.6,0.015, angle = 10)

text(1.65, -0.015, "临界值1.645",adj = c(0.5, 0), cex = 0.75)

text(2.45, 0.005, "概率0.05",adj = c(0.5, 0), cex = 0.75)

text(0, 0.15, "不拒绝expression(H['0']),概率(或面积)为0.95",adj = c(0.5, 0), cex = 0.75)

#这里似乎不行,我需要弄出H_0来,还望指点一二!谢谢

text(3.6, 0.005, "z的范围", adj= c(0.5, 0), cex = 0.75)

abline(h=0)

0818b9ca8b590ca3270a3433284dd417.png

15. 注意冒号:优先级最高

例如,在R中,当n=10,   n+1:n的输出结果是11 12 13 14 15 16 17 18 19 20;而n+2-1:n的输出结果是1110  9  8  7  6  5  4  3  2。

为什么输出的结果不一样呢?这是因为在R中:(冒号)的计算优先级高于加减法.前面两个例子等价于n+(1:n),   n + 2 – (1:n)

这篇关于, customer[,-c(10,13,20)] r语言,R语言基础编程技巧汇编 - 12的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366370

相关文章

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、