得空,那邊R在處理些資料,估計得要一天左右時間,不得不噴下R的循環for語句,慢!
言歸正傳,下面說下我這段時間遇到的問題,解決方法。
1.R語言添加列名
data是你需要修改列名的資料,若是多個列名,則需要c()
2.R語言 修改單個列名
有時候,可能隻需要修改單個列名,如果采用上面這種方法則太費事,可以使用:
names(data)[col_num] <- "m"
,意思是将data資料的第col_num個列名修改為m
3.填補缺失值
mdd[is.na(mdd)]<- 0
,将mdd資料中所有為NA的值替換為0,NA是一個邏輯值,不可使用==作為判斷依據
4.R語言求平均數(每行,每列)
例如:
data:
1 1 4
3 4 7
,data 為2*3的資料,求每列和,你可以使用
sum(data[,i])
,求行
sum(data[i,])
,其中i表示數字.
你也可以使用apply家族函數
求每行的和
求每列的和
其中1表示行,2表示列,比sum簡便多了吧,sum可以改成mean等函數,具體的可以help(“function”)一下,其中function為你需要查找的函數
5.R語言 查找滿足條件的資料
目前為止,我采用的是which語句
which(mdd$user_id==)
意思是查找mdd資料中user_id等于14581的資料,這裡傳回的是一組行編号
1 2 5 6 7 8 等等,你可以采取嵌套的方法直接擷取每行的資料
mdd[which(mdd$user_id==),]
這裡就是得到user_id為14581的所有資料了
6.R語言 随機抽取樣本
mydata[sample[,],]
意思為 從mydata 5400個樣本資料中,随機抽取10個樣本
7.R語言 求交集 并集 等
intersect(u1,u2) 求u1u2交集
union(u1,u2)求u1 u2并集
unique(u1) 求u1中不重複的元素 例如:1 1 2 3 3 3 會得到1 2 3
8.R語言 傳回多個結果
t = array()
for(i in :){
t[i]=i
a = list(t)
}
return (a)
此處傳回a這個list,你也可以采用unlist t(轉置) 等操作轉換到你需要的格式
9.R語言 排序
例如:
d1 <- c(,,,,,)
d1[order(d1)]
[1] 2 3 4 5 6 8
當然,你也可以使用sort(d1) 可以達到同樣的效果,而且sort函數還有一個好處,就是傳回下标
sort(d1,index.return =TRUE)
10.R語言 去除科學計數法 保留小數位
options(scipen=3)
options(digits=3)
11.R語言 中文亂碼問題
Rstudio中文亂碼 file–reopen with encoding 再選擇utf-8就ok了
"Not enough finite obervations" is an error returned by cor.test under certain circumstances. If you take a look a the cor.test.default source code, you'll see :
OK <- complete.cases(x, y)
x <- x[OK]
y <- y[OK]
n <- length(x)
cor.test removes NA values from you vectors [...]
if (method = "pearson") {
if (n < L)
stop("not enough finite obervations")
[...]
else {
if (n<)
stop("not enough finite obervations")
If your vectors do not contain enough non-NA values (less than ), the function will return the error.
Make all of the columns in your dataframe contain enough non-NA values before you use cor.test.
I hope this will be useful.
這是我遇到的一個問題,查找相關資料得到問題所在:向量中包含過多NA,非NA數量少于3個,如果你出現此類情況,請先檢查一下向量。
若有問題,請指出,謝謝!