关于R语言
我们这学期学习的 Data Analysis and Visualization 这门课,里面用到的就是 R Language。 对于不会MATLAB的我来说,R Language的确是很酷的一门语言。决定有机会的话认真学一下。
作业与回忆
PART A
作业的part A 部分,主要是对老师给定的一个dataset的分析, 从几万条数据中随机选取400条,然后计算它的各类数据,比如proportion、max、min、median等。
用到的方法大致有如下:
下面展示一些 内联代码片
。
prop.table(table(dat$Income.of.Policy.Holder, useNA = "ifany")) * 100 # N/A percentage
summary(dat$Income.of.Policy.Holder) # Values like "min", "max", "mean"
basicStats(dat$Income.of.Policy.Holder) #skewness
这里印象比较深刻的是,在R Language中关于for循环的写法。
在其他语言中,一般是:
for d in data:
if d.xxx == "xxx":
xxx
但是自己做作业的时候发现的出来的数据怎么都不对,后来找了好久,才发现可以换另外一种写法:
# 4. replace N/A values in "Claimed Amount Received "
# (1).Search the "Fraud Flag" values when "Claimed Amount Received" is "N/A"
for(i in 1:nrow(dat)){
if(is.na(dat$Claim.Amount.Received[i])){
print(dat$Fraud.Flag[i])
}
}
# Conclusion: We can see all the "Fraud Flag" is "Yes"
# (2).Search the "median" value of "Claimed Amount Received" when "Fraud Flag" is "Yes"
for(i in 1:nrow(dat)){
if(toString(dat$Fraud.Flag[i]) == "Yes"){
print(dat$Claim.Amount.Received[i])
}
}
# Conclusion: We can see that when "Fraud Flag" is "Yes", "Claimed Amount Received" is "N/A" or "0"
# (3).Finally, we have a conclusion, when "Frand Flag" is "Yes", "Claimed Amount Received" is "0",
# So, we can replace all the N/A here with "0"
真的是长见识了。。。
不知道还有没有其他语言会用到类似的写法。还是这是R Language自己特别的写法?
嗯,等以后自己学会了回来回答这个问题。
PART B
今天完成的是 PART B。 这个部分主要是对一个数据集进行PCA(Principal Component Analysis)。其中会要求进行Data Clean、Scree Plot、还有biplot的绘制,以及对于它的一些常规分析。
印象比较深刻的部分有:
文件读取时候的一些写法:
dat <- read.csv("/Users/collin/Downloads/My R Codes/Malware.csv",na.strings="", stringsAsFactors = FALSE)
最后stringsAsFactors = FALSE 是自己添加的,是自己在后面遇到数据转换的时候把所有“Yes”转成“1”的时候会出现错误而找到的方法。
数组内的批量转换
R Language居然可以一行代码批量转换!这个也很酷啊。具体写法如下:
mydata$inc.excutable[mydata$inc.excutable == "Yes"] <- 1
PCA这里我们主要用到的是:
data.pca <- prcomp(mydata[1:9], scale = TRUE)
其他就是一些基本的写法了。
table、summary、sum等。
总结
这次作业当中感觉不太好的就是对Scree plot 和 biplot还是不怎么理解。
以后有机会要多学学这方面的东西。
(在公司的实习快结束了,希望自己在转485签证和后面拿PR的事情上一切顺利!)
(居家隔离真的好不想动。。不过还是要每天做一点东西出来,不然不好跟上面的领导交差。明天把项目里面那个alert弹窗的问题解决了。。。)
(嘶。。到底swiftUI里面怎么能进入页面就进行一个判断然后决定是否弹出一个alert窗口呢?我找到的都是必须绑定在button上面的。)
var body: some View {
}
.frame(height: 110)
.alert(isPresented: self.$showingAlert) {
Alert(title: Text("Important message"),
message: Text("Wear sunscreen"),
dismissButton: .default(Text("Got it!"))
)
}
}