R notlar

2 saatlik kurs youtube freeCodeCamp.org ama ilk 1 saat full grafik vs sıkıldım, çok eğlenceli değil, belki ilk grafiklerden sonra direk data formats (1:06:14) e geçilebilir

packages R , https://www.crantastic.org/ ,github

install.packages("pacman")   yükledikten sonra 
require(pacman) bu da 
library(pacman) bu da olur

##her zman yüklediği paketlermiş

pacman::p_load(pacman,dplyr,GGally,ggplot2,ggthemes,ggvis,httr,lubridate,plotly,rio,rmarkdown,shiny,stringr,tidyr)

?plot   # ? help penceresini açıyor neyi öğrenmek istersen
#pencereni küçültmüşsündür, büyült düzelir
figure margins too large
#data çağır
MyData <- read.csv(file="C:\\Intel\\EFA.csv", header=TRUE, sep=",") 

MyData <- read.csv(file="C:/Intel/EFA.csv", header=TRUE, sep=",")
#scirpt te yazdığını işle (consel da yazmış gibi ol)
ctrl+enter
#consel sil
ctrl+L
#İKİ TÜR package varmış biri base de olup load edilmeyen 
                             diğeri sonradan üretilen 
yani sonradan üretilenleri internetten yükleyecen ve load , base olanları da load etmen yeterli (zaman geçince son cümleyi ekledim, tam hatırlamdan)
plot(iris$Species) # kategorik
plot(iris$Petal.Length)  #sayılan
plot(iris$Species,iris$Petal.Width) #kategorik X kantitatif(sayılan)
plot(iris$Petal.Length,iris$Petal.Width) #kantitatif X kantitatif
plot(iris$Petal.Length,iris$Petal.Width,
     col = "#cc0000", #renk Hex kod
     lwd = 15 #eğri ya da noktaların kalınlığı ayarlıyorsun
     cex = 1.5 #   %150 büyüt size ı
     pch = 13, #noktaların nasıl olacağını seçiyorsun
     main = "Iris:Petal Length VS. Petal Width",  #başlık
     xlab = "Petal Length",  #x başlığı
     ylab = "Petal Width") #y başlığı
plot(cos,0,2*pi)    #kosinüs 0 dan 2*pi ye kadar
plot(exp,1,5)       #exponential eğri 1 den 5 e kadar
plot(dnorm,-3,+3)   #normal dağılım -3 ten 3 e kadar

cylinders<-table(mtcars$cyl)  #table ile excel sayfası gibi yapıryuz data yı

barplot(cylinders)  #daha kalın plot
plot(cylinders)     #klasik plot
hist(iris$Petal.Width[iris$Species=="setosa"],
     xlim = c(0,3),
     breaks=9,
     main="Petal Width for Setosa",
     xlab="",
     col="red")                           bu kısmı anlamadım

ayrıca histogram a normal dağılım vs eklenebiliyor,çalışmadı ama dursun şurada
****OLDU! hist kısmını ayrıntılı yapıp 
freq=FALSE yazman yeterli böylece axis show density not freq

daha önce direk x eksenine yapışıyordu demekki sol taraf(y ekseni) fazla büyük geliyordu

      curve(dnorm(x,mean=mean(lynx),sd=sd(lynx)),
      col="thistle4",
      lwd=2,
      add=TRUE)

hist(mtcars$mpg[mtcars$mpg<18]) #bu şekilde 18 den küçükleri hsitograma katar

hist(iris$Petal.Length[iris$Species=="virginica" & iris$Petal.Length<5.5]) #yukarıdan farklı olarak virginica olanlardan 5.5 den küçükleri alır 

xx<-mtcars[mtcars$mpg<19,] #xx değişkeni mtcars içerisnde mpg si 19 dan küçük olan değişkenlerden oluşmuş

ee<-iris[iris$Species=="setosa",] #ee değişkeni iris içerisinde species i setosa olanlardan oluşmuş
summary(iris$Species)  #kategorik değişkende sayısal dağılmı veriyor
summary(iris$Sepal.Length) #kantitatif değşknd descrptve istatistik
describe(iris$Sepal.Length) #daha ayrıntılı desrptive istatistik
data types
numeric(integer,single,&double)
chracter,logical(boolean),complex,&raw

data structures
vector
matrix,array
data frame
list

nn<-11  #nn=11 değişkenini oluşturduk ve bunun türü double
cc<-"m" #chracter
cc4<-"bu bir text" #character
typeof(nn) #türünü öğren
L3<-TRUE  #logical
L4<-F   #logical
V1<-c(1,2,3,4,5) #vektör  ,concatenate nin c si yani birleştiriyor
v99<-c("a","b","c") #vektör
V7<-c(TRUE,FALSE,TRUE)

is.vector(V1) #V1 vektör mü diye soru soruyor
m1<-matrix(c(T,F,F,T,T,T,F,F,F,T),nrow =5 ) #matrix ,5 dedik ya 5 satır yapacak ilk 5 eleman baştan sona sonraki 5 eleman da diğer sütuna,2 deseydik ilk 2 leman 1. satır ve 2. satır sonraki sütunda 1. ve 2.satır 3. ve 4. eleman 
m2<-matrix(c("a","b","c","d","e","f","r","k"),nrow=2,byrow = F)
m2
     [,1] [,2] [,3] [,4]
[1,] "a"  "c"  "e"  "r" 
[2,] "b"  "d"  "f"  "k" 

m2<-matrix(c("a","b","c","d","e","f","r","k"),nrow=2,byrow = T)
m2
     [,1] [,2] [,3] [,4]
[1,] "a"  "b"  "c"  "d" 
[2,] "e"  "f"  "r"  "k" 

m2<-matrix(c("a","b","c","d","e","f","r","k"),nrow=2)
m2
     [,1] [,2] [,3] [,4]
[1,] "a"  "c"  "e"  "r" 
[2,] "b"  "d"  "f"  "k" 

SONUÇ OLARAK byrow=T dediğinde diziliş değişti, byrow=F ile hiç byrow eklenmemiş hali eşit
a1<-array(c(1:24),c(2,6,3)) #dizi , 2 satır 6 sütun 3 boyut olsun demişiz , 1 den 24 e kadar sayılar yetmeyince başa dönüyor 
a1
, , 1

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    3    5    7    9   11
[2,]    2    4    6    8   10   12

, , 2

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   13   15   17   19   21   23
[2,]   14   16   18   20   22   24

, , 3

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    3    5    7    9   11
[2,]    2    4    6    8   10   12
dfa<-cbind(V1,VV,v99) #dataframe , cbind 3 farklı vektrü birleştrdi, one data type
dfa
     V1      VV  v99
[1,] "TRUE"  "1" "a"
[2,] "FALSE" "2" "b"
[3,] "TRUE"  "3" "c"

dfa<-as.data.frame(cbind(V1,VV,v99)) #yukarıdakinden farklı olarak "" gitti, her vektörün türü aynı kaldı
dfa
     V1 VV v99
1  TRUE  1   a
2 FALSE  2   b
3  TRUE  3   c
list1<-list(o1,o2,o3) #diğertürlere göre daha uzunşekilde listeliyor
list1
[[1]]
[1] 1 2 3

[[2]]
[1] "a" "b" "c" "d"

[[3]]
[1]  TRUE FALSE  TRUE  TRUE FALSE

list2<-list(o1,o2,o3,list1) # bu şekilde liste içine liste de konabiliyor
(qq<-c(2,"a","3","w")) #anldgm kadaryla en az 1 karakter varsa türü chracter oluyor
typeof(qq) 
"character"

ww<-5  #bunun türü de double
"double"

rr<-as.integer(ww)  ya da rr<-as.integer(5) yaptığımızda coerce yaparak yani zorlayarak türünü integer yaptı
typeof(rr)
"integer"

dd<-c("1","2","3")
typeof(dd)
"character"

fg<-as.numeric(dd)
fg
1 2 3
typeof(fg)
"double"
#karakterden sayıya çevir
yyz$b <- as.numeric(as.character(yyz$b))     character to numeric
zx<-matrix(1:8,nrow=4)
zx
     [,1] [,2]
[1,]    1    5
[2,]    2    6
[3,]    3    7
[4,]    4    8

az<-as.data.frame(zx)  #böylece matrisi data frame ye çevirdi
az
  V1 V2
  1  5
  2  6
  3  7
  4  8
(x1<-1:3)  #dikkat parantez kullandık , () kullanınca hem kodu yazıyor hem çıktıyı veriyor  ********ÖNEMLİ
[1] 1 2 3
(y<-1:9)
[1] 1 2 3 4 5 6 7 8 9
(df1<-cbind.data.frame(x1,y)) #birleştirdi, x1 in değişkenleri yetmese de başa sardı tamamladı
  x1 y
1  1 1
2  2 2
3  3 3
4  1 4
5  2 5
6  3 6
7  1 7
8  2 8
9  3 9

 str(df1)     #structure ın kısaltması,yapıyı verdi
'data.frame':	9 obs. of  2 variables:
 $ x1: int  1 2 3 1 2 3 1 2 3
 $ y : int  1 2 3 4 5 6 7 8 9
https://www.youtube.com/watch?v=xkRBfy8_2MU

şu sayfa ve yukarıdaki resimleri aldığım videoya bakılabilir

> hhtrtr<-1:10
> hhtrtr
 [1]  1  2  3  4  5  6  7  8  9 10
> seq(10)
 [1]  1  2  3  4  5  6  7  8  9 10
> hh<-seq(33,0,by=-5) #30 ilk sayı, 0 son sayı, by= miktar(+ veya -)
> hh
[1] 33 28 23 18 13  8  3
r2<-scan() #r2 ye sayıları gösteriyoruz en son karşılık vermeyince ve tekrar r2 dersek gösterdiklerimizi yazıyor
1:


d2<-rep("SED",7) #"SED" i 7 defa tekrar ettirdik

we<-rep(c("de","re",11),3) #c ile birleştirmezsen fazladan yazamıyorsun
we
[1] "de" "re" "11" "de" "re" "11" "de" "re" "11"

we<-rep(c("de","re",11),each=3) #each dediğinde aşağıda görüldüğü gibi
we
[1] "de" "de" "de" "re" "re" "re" "11" "11" "11"

CSV >>comma separated values

XLSX veya XLS >>excel spread sheet

JSON>> Javascript Object Notation

dosyam1<-import("C:/Users/test/Desktop/mbb1.xlsx") #ALDI AMA
dosyam2<-import("~/Desktop/mbb1.xlsx") # NEDEN ÇALIŞMADI ANLAMDIM

qww<-read.table("C:/Users/test/Desktop/mbb.txt"
                header = TRUE,
                sep= "\t" )  #missing data da sep i ekliyormuşuz txt için csv de eklemiyoruz zaten anlamı comma separated diyor sadece 

qww<-read.table("C:/Users/test/Desktop/mbb.csv"
                header = TRUE) #şeklinde yeter diyor

TAM ANLAMADIM
der<-mtcars[,c(1:4,6:7,9:11)] #virgül öncsi boşluk satırların hepsini al manasında anladığım kadarıyla,sonra da sütunları seçyor
der

kk1<-der %>%
dist %>%    #distance
hclust     #yukarıda oluşturduğumuz der değişkenini kümelettik

plot(kk1)  #hiyerarşik yazdırdık


rect.hclust(kk1,k=2,border = "purple") #renklendirdi
rect.hclust(kk1,k=3,border="blue")
ss1<-prcomp(ced,              #principal compponent hesaplıyor
          center=TRUE,
          scale=TRUE)
summary(ss1)           #yukarıdakilerin sonucu

rex<-prcomp(~mpg+cyl+disp+hp+wt+qsec+am+gear+carb,
            data=mtcars,   
            center=TRUE,
            scale=TRUE)   #böyle tek tek seçmek de mümkün ama data= denmiş dikkat et

plot(ss1) #plot yazdır
predict(ss1)%>%round(2) # %>% okunabilirliği arttırmak için kullanılıyrmuş genelde
predict(ss1)   #ilk kod da yuvarlama var başka farkları yok

biplot(ss1)  #çok boyutlu plot yazdı

TAM ANLAMADIM
z1<-as.matrix(datam[-12])  #12.sütun hariç z1 objesini oluşturduk,bağımsız değişkenler,verimiz USJudgeRatings (R da olan)
t1<-datam[,12]              #12.sütunu t1 a verdik bağımlı değişken
w11<-lm(t1~z1)     #lm linear model

veya
w12<-lm(RTEN~CONT+INTG+DMNR+DILG+CFMG+DECI+PREP+FAMI+ORAL+WRIT+PHYS,
        data=USJudgeRatings) #bu şekilde de yapabilrsin

w12 dediğinde sonuçları yazdırır
summary(w12) dediğinde  eviews çıktısı gibi daha ayrıntılı veriyor

anova(w12)    #Analysis of Variance Table
coef(w12)      #yukarıdaki katsayılar
confint(w12)    #güven aralıkları
resid(w12)        
hist(residuals(w12))

şurada csv read hahkında ,csv dosyasını aktarmak için

session>set working directory

—-

Error in svd(x, nu = 0, nv = k) : infinite or missing values in ‘x’ hatası geldi pca yaparken,ben eksik veri olmadığını düşünüyordum elle daha doğrsu şöyle 2984 satırlık şeyi maalesef hızlıca kontrol ettğimde bulamamıştım,farklı sebepten kaynaklandığını düşünüyordum.Neyse sonunda gerçekten eksik verim varmış buldum 4 tane hücreyi ama kulağına küpe olsun bbir daha ki sefere excelden hala göç etmediysen ctrl+shift ile her sütundan aşağı inmeyi denersen boş hücreleri görmüş olursun orada takılır kalırsın


R commander da kod bilmeden R ı kullanmaya yarıyor gördüğüm kadarıyla


temel bileşenler analizi (pca) R da iki farklı şekilde yapmışlar, prcomp komutuyla ya da  psych paketindeki principal ile mümkün.ikincisi daha benzer SPSS ye


şurada R daki örnek verilerden ,şurada iris çiçek verisinden bahsetmiş


deletea1=a1[complete.cases(a1),] #eksik satırları sil

complete.cases(data)
[1] FALSE  TRUE  TRUE FALSE FALSE

deletea1=a1[complete.cases(a1[ , 5:6]),]  #5ve6.sütunu boş olanları sil

eksik verilerle çok uğraştım , az daha ayrıntı

is.na(a1) #FALSE ÇIKANLARDA SIKINTI YOK,EKSİK OLSA true diyecek  
resimdeki çıktıyı verdi    
which(is.na(a1)) # bu vektör için aslında ,matrise uygulayınca aşağıdaki gibi çıkıyor.aslında aşağıdaki çıktıda sıkıntı yok görünen kısımda ama aslında  6000 küsur gsötermiş ki matris 1542 satırlık yani 1. sütundan sonra da saymaya devam etmiş işe yaramaz matriste
 which(is.na(a1$heiGHT)) #yukarıdakinden farkı sütun belirtince verdiği sayılar daha anlamlı oluyor,öbür türlü kaçıncı sütuna tekabül ediyor bulmak lazım
which(is.na(a1[ , 1])) #yukarıdakiyle aynı işi gördü
apply(is.na(expl_matrix1), 2, which) ###EN FAZLA İŞE YARAYAN KOD BU, burada "2" , matrisin indexini işaret ediyor,hani ilk başta satır sonra sütun yazıyorduk ya, buraya 3 yazamadık matris olduğu için,1 yazınca da satırlara göre hangi sütunda hata var onu gösteriyor, o da 2. resim 
https://www.rdocumentation.org/packages/base/versions/3.6.1/topics/NA
veri benim ama bu linkten yaralandım https://statisticsglobe.com/r-find-missing-values/
yukarıdaki açıklamaya örnek olsun diye

—-

https://statisticsglobe.com/replace-na-with-last-observed-value-in-r
list to dataframe ,listeden veri tablosuna çevir
https://www.r-bloggers.com/converting-a-list-to-a-data-frame/
require(devtools)
source_gist(4676064)
> test1 <- list( c(a='a',b='b',c='c'), c(a='d',b='e',c='f'))
> as.data.frame(test1)
  a b c
1 a b c
2 d e f
https://stackoverflow.com/questions/22249702/delete-rows-containing-specific-strings-in-r
Value   Name 
    55     REVERSE223   
    22     GENJJS
    33     REVERSE456
    44     GENJKI
df[- grep("REVERSE", df$Name),]
df[!grepl("REVERSE", df$Name),]
Value   Name 
    22     GENJJS
    44     GENJKI
ilk tablo bu hale geldi
verimm <- data.matrix(sonn) #listeden numerik matrikse 
#ama aşağıdakini kullansa  listeden chracter matrikse dönüyor içinde genelde
verimm <- data.matrix(sonn)
https://stackoverflow.com/questions/17506691/converting-from-a-list-to-numeric-in-r

chisq.test(tablename)  ki kare testi
M<-as.table(rbind(c(100,130,20),c(100,300,175),c(25,50,100))) #kodu ile yukarıdaki tablo elde ediliyor 9x3 lük gibi dursa da 3 e 3lük var1 ve var2 ye dikkat edersen
dimnames(Q)<-list(yasgrubu=c("30un altı","30-40arası","50veüstü"),birincihaberkaynaği=c("radyo","tv","gazete"))   
#burada dinames ile yukarıdaki table satır ve sütunlarına ad veriyoruz, list sayesinde  sıraladık c ile birleştirdik, mezvu aşağıdaki resimde daha iyi anlaşılır
https://www.dataanalytics.org.uk/row-column-names-using-dimnames-in-r/

video youtube scraper comments

videodaki paket ismi değişmiş yorumlara yazmışlar ben de ekledim,şuan 2. videoyu çekmiyor çözmeye çalışıyorum,paketle ilgili ayrıntı.tamam video url sonundaki = den sonraki şeyi düzgün yazınca çekiyor.aslında ilk denemelerde deoldu herhalde de satır fazla geldiğinden göstermedi am değişkene tıklayınca oldu

myapikey<-"writeyourshere"
youtubeAuth<-Authenticate("youtube",apiKey=myapikey)
video<-c("3gJngOCyrZg","8cGDkxySRtw")
ytdata<-Collect(credential =youtubeAuth,video,ego=F,maxComments = 200)
write.csv(ytdata,file="abc.csv",row.names = F) #ile R ın varsayılan (ya da ayarlanmış dizinine abc.csv dosyasını üretti)

ya da “tuber” paketini de kullansan olur , video

install.packages("tuber")
library(tuber)
appid<-"503732959299-82pabhm61mi7buoi8e31973gr77q8sko.apps.googleusercontent.com"
appsecret<-"eR1XklXDFq4xvleW0oQUDBMp"
yt_oauth(appid,appsecret,token="")
get_all_comments(video_id ="lV9X2K8uEYE" )
mycomments<-get_all_comments(video_id ="3gJngOCyrZg" )
UTF-8-MAC   yerine aşağıdaki 
iconv(text, to='UTF-8', sub = "byte")

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s