SAS学习3(对数据的简单处理、条件、循环语句、数组、datasets过程)

在这里插入图片描述

产生新变量

赋值语句
在这里插入图片描述

这里s的初值是0,然后循环处理,一直累加,相当于s=s+x
不要画蛇添足的写一个s=0,因为写上以后每次循环s的初值就是0,而不是累加了
在这里插入图片描述

这里每次循环z赋值为0,所以每次和x一样
s是上面讲过的累加
retain y 8 是给y赋初始值8,然后开始累加x,但是下次循环的时候,y的值不会重置,retain这条语句不会执行,所以就有y和s相差8的情况
retain语句可以代替求和语句,并且给数据赋初值
在这里插入图片描述

删除变量

drop把三个列删除掉,目标数据集中不会写入,但是中间运算过程中变量是可以使用的
在这里插入图片描述

drop以后,输出不显示,数据集中也不会写入
在这里插入图片描述

保留变量

保留指定变量,其他变量不写入
在这里插入图片描述

条件语句

mean计算平均值
每个观测值都会执行if语句,
put是输出语句,跟print的区别在于put是将输出值输出在日志窗口,而不是在输出窗口
在右边看到输出窗口都输出了,日志窗口只有if以后的
在这里插入图片描述

if 满足条件,then执行,否则else执行
在这里插入图片描述

忽略首行的变量描述 _N_
在这里插入图片描述

在这里插入图片描述

用if语句创建子数据集

在这里插入图片描述

删除行

由于这里if后面的语句不止一条,所以这里不能直接写
需要写do加上end,将这几句话框起来,相当于java中的{}

这里的of(查到的):
这些函数的调用方法类似其它语言,比如求x1,x2,x3三个自变量的和可以用函数SUM(x1,x2,x3) 。另外,SAS还提供了函数调用的另一种语法以便于把多个数据集变量作为函数自变量,其格式为“函数名(OF 变量名列表)”,其中变量名列表可以是任何合法的变量名列表,比如x1 ,x2,x3的和等价地可以用SUM(OF x1 x2 x3)或SUM(OF x1-x3)表示。注意两种写法不能混在一起,比如SUM(OF x1,x2,x3)和SUM(x1-x3)都是错的。

关键应该是把多个数据集变量作为函数自变量,变量名列表写的时候中间没有逗号
在这里插入图片描述

循环语句

在这里插入图片描述

goto不建议使用
这里两个@@符号可以看到也可以用在输出中,表示不换行
在这里插入图片描述

其实就是for循环
c是1到8,步长是2;后面13表示也可以取13,16,17,18也可以取到
put c= 可以看到输出的是C=数字,这种形式
在这里插入图片描述
在这里插入图片描述

这个数据步没有input,也没有datalines,所以循环结束就会终止
结束以后,会自动创建一个数据集,写入n=5,只有一个观测值
在这里插入图片描述

output

output会将每次循环的观测值写入数据集

但是可以看到和上一个程序的差别,这里n没有把5写入数据集中
只有在数据步中存在output,数据步就不会产生自动写入的操作,只有output的时候才回去执行写入的动作
也就是只有output会显示的写入,而不会隐式的自动写入
在这里插入图片描述

do until是条件成立的时候退出循环
但是这里可以看到,循环还是执行了一次,这就相当于until是写在循环体最后面的
在最后面判断循环是否进行
所以这里仍然会进行一次执行
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

数组

sas中的数组相当于变量的别名
可以通过下标来对数组中的变量进行控制

创建数组:
ARRAY test[8] 变量名
表示创建8个变量的数组,分别对应
取元素的时候可以用小括号或者大括号
在这里插入图片描述

例子
在这里插入图片描述

这里在创建数组的时候赋予了初始值
input中test[*]读入test数组
在这里插入图片描述

多维数组

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

数据集连接

在列的方向上进行合并
当各个表中变量结构完全相同的时候,直接连接

当结构不同的时候,会将没有的值赋空值
在这里插入图片描述

合并

就是行的方向上合并

一对一合并就是直接将观测值一行行合并,其实大部分情况下没什么意义
在这里插入图片描述

匹配合并
在这里插入图片描述

首先产生两个数据集
在这里插入图片描述
在这里插入图片描述

排序以后合并
先排序是为了合并更加效率
sas中没有索引的概念
在这里插入图片描述

输出语句

put

在这里插入图片描述

@y表示在y的位置上输出x,后面的@的表示不换行
输出一行以后,写一个put表示换行
在这里插入图片描述

file

给文件中写数据
在这里插入图片描述

file指定输出的文件
print是表示输出窗,这里也可以是log,表示日志窗
也可以是文件名,表示写到具体文件中
n=ps表示行号可以控制

在这里插入图片描述
在这里插入图片描述

output

在这里插入图片描述

目标数据集有两个
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

datasets过程

在这里插入图片描述

在这里插入图片描述

append

在这里插入图片描述

modify

配合后面的语句使用
在这里插入图片描述

format

在这里插入图片描述

informat

在这里插入图片描述

label

rename

在这里插入图片描述

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习算法对图像数据进行处理的代码通常使用深度学习框架来实现,比较常用的框架有TensorFlow、PyTorch、Keras等。 以下是一个使用PyTorch实现图像分类的代码示例: ```python import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms # 定义数据处理 transform = transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) # 加载训练数据 trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2) # 加载测试数据 testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform) testloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2) # 定义神经网络模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = self.pool(torch.relu(self.conv1(x))) x = self.pool(torch.relu(self.conv2(x))) x = x.view(-1, 16 * 5 * 5) x = torch.relu(self.fc1(x)) x = torch.relu(self.fc2(x)) x = self.fc3(x) return x net = Net() # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9) # 训练模型 for epoch in range(2): running_loss = 0.0 for i, data in enumerate(trainloader, 0): inputs, labels = data optimizer.zero_grad() outputs = net(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() if i % 2000 == 1999: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 2000)) running_loss = 0.0 print('Finished Training') # 测试模型 correct = 0 total = 0 with torch.no_grad(): for data in testloader: images, labels = data outputs = net(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the 10000 test images: %d %%' % ( 100 * correct / total)) ``` 这段代码使用了一个基于卷积神经网络的模型对CIFAR-10数据集进行分类。其中,通过`transforms`定义了数据处理操作,使用`torchvision.datasets`加载数据集,使用`nn.Module`定义了神经网络模型,使用`nn.CrossEntropyLoss()`定义了损失函数,使用`optim.SGD()`定义了优化器,使用`DataLoader`定义了数据加载器,最后通过训练和测试模型来对模型进行评估。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值