, 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

相关文章

Python中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

Python使用Matplotlib和Seaborn绘制常用图表的技巧

《Python使用Matplotlib和Seaborn绘制常用图表的技巧》Python作为数据科学领域的明星语言,拥有强大且丰富的可视化库,其中最著名的莫过于Matplotlib和Seaborn,本篇... 目录1. 引言:数据可视化的力量2. 前置知识与环境准备2.1. 必备知识2.2. 安装所需库2.3

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

JavaScript装饰器从基础到实战教程

《JavaScript装饰器从基础到实战教程》装饰器是js中一种声明式语法特性,用于在不修改原始代码的情况下,动态扩展类、方法、属性或参数的行为,本文将从基础概念入手,逐步讲解装饰器的类型、用法、进阶... 目录一、装饰器基础概念1.1 什么是装饰器?1.2 装饰器的语法1.3 装饰器的执行时机二、装饰器的

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

GO语言zap日志库理解和使用方法示例

《GO语言zap日志库理解和使用方法示例》Zap是一个高性能、结构化日志库,专为Go语言设计,它由Uber开源,并且在Go社区中非常受欢迎,:本文主要介绍GO语言zap日志库理解和使用方法的相关资... 目录1. zap日志库介绍2.安装zap库3.配置日志记录器3.1 Logger3.2 Sugared

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql