r 绘制不同质量的平台

绘制不同质量的平台

gistfile1.r
#wczytanie plikow z danymi ocen workerow
message("Wskaz plik z wynikami z systemu MACE")
mace=read.csv(file.choose(),header=FALSE,sep="")
message("Wskaz plik z wynikami z systemu TROIA v. mincost")
troia=read.csv(file.choose(),header=FALSE,sep="\t")



#wyliczenie względnej oceny dla workerów. 1=najlepszy worker
mace$relaive_score<-mace$V1/max(mace$V1)
troia$relaive_score<-troia$V2/max(troia$V2)


#wyświetlenie wykresów z ocenami jakości dla platform
plot(sort(mace$V1),type="l",col="red", ylab="Quality in different platforms",xlab=paste("Correlation bettwen troia minCost and mace scores=",cor(mace$V1,troia$V2)))
lines(sort(troia$V2),col="green")
legend("topleft", legend = c("troia","mace"), pch=1, col=c("green","red"))

r 从数据框中删除给定的列

从数据框中删除给定的列

gistfile1.r
dat<-dat[,!(names(dat) %in% c("V3","V4"))]

r 连接data.frame中的2个文本列

连接data.frame中的2个文本列

gistfile1.r
> dat=read.csv(file.choose(),header=FALSE,sep=" ")
> head(dat)
     V1     V2             V3     V4
1 83965 891552   Identifiable People
2 88599 891552   Identifiable People
3 42966 891552   Identifiable People
4 83965 891553 Unidentifiable People
5 88599 891553 Unidentifiable People
6 42966 891553 Unidentifiable People
> dat$LABEL<-do.call(paste,c(dat[c("V3","V4")],sep="_"))
> head(dat)
     V1     V2             V3     V4                 LABEL
1 83965 891552   Identifiable People   Identifiable_People
2 88599 891552   Identifiable People   Identifiable_People
3 42966 891552   Identifiable People   Identifiable_People
4 83965 891553 Unidentifiable People Unidentifiable_People
5 88599 891553 Unidentifiable People Unidentifiable_People
6 42966 891553 Unidentifiable People Unidentifiable_People

r wojtekw - z poprawnym przeskalowaniem

wojtekw - z poprawnym przeskalowaniem

gistfile1.r
library(matrixStats)
library(R.methodsS3)
#biblioteki plyr uzyjemy do szybkiego wygenerowania podsumowan 
library(plyr)
#do wykresow:
require(ggplot2)


#wyczyść wszystkie zmienne z pamięci
rm(list=ls(all=TRUE))

#run garbage collector
gc()


#wczytanie danych dotyczacych ocen stron przez mturkow
#d_eval<-read.csv("/Users/andi/Desktop/RECONCILE/IBR2.csv", header=TRUE, sep=";")
d_eval<-read.csv("/Users/andi/Desktop/RECONCILE/DANE_evaluations.csv", header=TRUE, sep=";")



#PRZESKALOWANIE DANYCH
konwertuj<-function(df_name,column_name) {
df_name[,column_name][df_name[,column_name]==5]<-NA #zrodlowe 5 zamien na NA (don not know)
df_name[,column_name][df_name[,column_name]==4]<-5	#zrodlowe 4 zamien na 5 (completly credible) 
df_name[,column_name][df_name[,column_name]==3]<-4	#zrodlowe 3 zamien na 4 (credible, with some doubt)
df_name[,column_name][df_name[,column_name]==2]<-3	#zrodlowe 2 zamien na 3 (somewhat credible, although with major doubt)
df_name[,column_name][df_name[,column_name]==1]<-2	#zrodlowe 1 zamien na 2 (mostly not credible) 
df_name[,column_name][df_name[,column_name]==0]<-1  #zrodlowe 0 zamien na 1 (completly not credible)
return (df_name)
}

#WYKONANIE przeksalowania danych
d_eval<-konwertuj(d_eval,"documentevaluation_credibility")


#przygotowanie danych dla Troi
#z NA
troia_input<-subset(d_eval,select=c(person_id,document_id,documentevaluation_credibility))
write.table(troia_input, file="/Users/andi/Desktop/RECONCILE/troia_input.csv",row.names=FALSE, col.names=FALSE,sep=" ")
#bez NA
troia_input_without_na <- troia_input[!is.na(troia_input$documentevaluation_credibility),]
write.table(troia_input_without_na, file="/Users/andi/Desktop/RECONCILE/troia_input_without_na.csv",row.names=FALSE, col.names=FALSE, sep=" ")
#z 0 zamiast NA
troia_input_with_zeros <- troia_input
troia_input_with_zeros[is.na(troia_input_with_zeros)]<-0
write.table(troia_input_with_zeros, file="/Users/andi/Desktop/RECONCILE/troia_input_with_zeros.csv",row.names=FALSE, col.names=FALSE, sep=" ")



#WYKRESY LICZBY OCEN
#zwroci tabele zawierajaca w pierwszej kolumnie liczbe ile-krotnie strona zostala oceniona, a w drugiej ile stron z calego zbioru dotyczyla tylo-krotna ocena.

#wariant wliczajacy NA
count(count(d_eval,"document_id"),"freq")
b<-barplot(count(count(d_eval,"document_id"),"freq")$freq.1,main="Distribution of number of ratings per page (including 0 - \"don\'t know\")",names.arg=count(count(d_eval,"document_id"),"freq")$freq)
mtext(side = 1, at = b, text = paste("#:",count(count(d_eval,"document_id"),"freq")$freq.1), line = 3)

#wariant pomijajacy NA
count(count(troia_input_without_na,"document_id"),"freq")
b<-barplot(count(count(troia_input_without_na,"document_id"),"freq")$freq.1,main="Distribution of number of ratings per page(without 0 - \"don\'t know\")",names.arg=count(count(troia_input_without_na,"document_id"),"freq")$freq)
mtext(side = 1, at = b, text = paste("#:",count(count(troia_input_without_na,"document_id"),"freq")$freq.1), line = 3)





srednia<-function(lista) {
sum1=0
sum2=0
for (i in 1:length(lista)){
	sum1=sum1+reated(lista[i])*notna(lista[i])
	sum2=sum2+reated(lista[i])
}
if (sum2!=0){
as.numeric(sum1/sum2)
}
else if(sum1==0){
as.numeric(0)
}
}



wariancja<-function(lista) {
sum1=0
sum2=0
srednia=srednia(lista)
for (i in 1:length(lista)){
	sum1=sum1+reated(lista[i])*(notna(lista[i])-srednia)^2
	sum2=sum2+reated(lista[i])
}
if (sum2!=0){
as.numeric(sum1/sum2)
}
else if(sum1==0){
as.numeric(0)
}
}


reated <- function(arg){
if(is.na(arg)){
	as.numeric(0)
}
else
{
	as.numeric(1)
}
}


notna <- function(arg){
	if(is.na(arg)) 0 else arg
}

# co najmniej 2 oceny=5 -> strona trafia do klasy HC (Highly Credibly)
# co najmniej 2 oceny=4 -> strona trafia do klasy N (Neutral)
# co najmniej 2 oceny<4 -> strona trafia do klasy HNC (Highly Not Credible)
adamw_classifier<-function(lista){
#zamiana NA na 0
for (i in 1:length(lista)){ lista[i]=notna(lista[i]) }
#stworzenie data frameu z czestosciami wystapien poszczegolnych ocen dla strony
df<-data.frame(table(lista))
if ((5 %in% df$lista) && (df[df$lista==5,]$Freq >= 2)) {		
			#print("HC was assigned")
			return (as.character("HC")) #(3)#
	}
else if ((4 %in% df$lista) && (df[df$lista==4,]$Freq >= 2)){
					#print("N was assigned")
					return (as.character("N")) #(2)#
	}
else if (sum(df[as.numeric(levels(df$lista)[df$lista]) < 4,]$Freq) >=2){
			#print("HNC was assigned")
			return (as.character("HNC")) #(1)#
	}
else{
	#print("UNDIFINED was assigned")
	return (as.character("UNDEFINED")) #(0)#
	}
}



#stworzenie słownik klas
klasy_adamw<-c(0,1,2,3)
names(klasy_adamw)<-c("UNDEFINED","HNC","N","HC")


# ZAAGREGOWANIE OCEN, wyliczenie SREDNICH, WARIANCJI, WYZNACZENIE WARTOSCI ADAMW CLASSIFIER
dane<-ddply(troia_input_without_na,.(document_id),summarise,SREDNIA=srednia(documentevaluation_credibility),WARIANCJA=wariancja(documentevaluation_credibility),CLASS_ADAMW=adamw_classifier(documentevaluation_credibility),CLASS_NUM=klasy_adamw[[adamw_classifier(documentevaluation_credibility)]])



dane_without_undefined<-dane[!dane$CLASS_ADAMW=="UNDEFINED",]


# WYKRES WARIANCJI I SREDNIEJ
plot(y=jitter(dane$WARIANCJA,amount=0.2),x=jitter(dane$SREDNIA,amount=0.2),main="WYKRES WARIANCJI i SREDNIEJ")


# WYKRES WARIANCJI I SREDNIEJ + NANIESIENIE WARTOSCI KLASYFIKATORA ADAMAW
qplot(y=jitter(dane$WARIANCJA,amount=0.2), x=jitter(dane$SREDNIA,amount=0.2),colour=dane$CLASS_ADAMW,main="WYKRES WARIANCJI i SREDNIEJ + NANIESIENIE WARTOSCI KLASYFIKATORA ADAMAW")

# WYKRES WARIANCJI I SREDNIEJ + NANIESIENIE WARTOSCI KLASYFIKATORA ADAMAW bez "UNDEFINED"
qplot(y=jitter(dane_without_undefined$WARIANCJA,amount=0.2), x=jitter(dane_without_undefined$SREDNIA,amount=0.2),colour=dane_without_undefined$CLASS_ADAMW,main="WYKRES WARIANCJI I SREDNIEJ + NANIESIENIE WARTOSCI KLASYFIKATORA ADAMAW bez \"UNDIFINED\"")


#K - MEANS
kmeans_data<-matrix(c(dane$SREDNIA, dane$WARIANCJA),ncol=2)
kmeans_result<-kmeans(kmeans_data,length(unique(dane$CLASS_ADAMW))-1)

#WYKRES pokolorwany grupowaniem według K-MEANS
plot(y=jitter(dane$WARIANCJA,amount=0.2),x=jitter(dane$SREDNIA,amount=0.2),main="WYKRES pokolorwany grupowaniem według K-MEANS",col=kmeans_result$cluster)
points(kmeans_result$centers,col=6,pch=10,cex=3)
legend("topleft", legend = paste("Group", 1:3), pch=1, col=2:4)

r 10c实验子集

10c实验子集

gistfile1.r
from numpy import arange
from scipy import stats
l=arange(0.25,1.01,0.25)# l=arange(0.1,1,0.1)
print l
import itertools as it
pr=it.product(l,repeat=6)

l2=list(pr)
# for i in pr:
#   l2.append(i)
 
print len(l2)





foo=[(fu,fn,uf,un,nf,nu) for fu,fn,uf,un,nf,nu in l2 if fu<=fn and nf>=nu]

print len(foo)

r mit wojtekw @ RECONCILE --- !!! Zpoważnymibłędami!!!错误

mit wojtekw @ RECONCILE --- !!! Zpoważnymibłędami!!!错误

gistfile1.r
#wczytanie danych dotyczacych ocen stron przez mturkow
d_eval<-read.csv("/Users/andi/Desktop/RECONCILE/DANE_evaluations.csv", header=TRUE, sep=";")



library(matrixStats)
library(R.methodsS3)



#przygotowanie danych dla Troi
#z NA
troia_input<-subset(d_eval,select=c(person_id,document_id,documentevaluation_credibility))
write.table(troia_input, file="/Users/andi/Desktop/RECONCILE/troia_input.csv",row.names=FALSE, col.names=FALSE,sep=" ")

#bez NA
troia_input_without_na <- troia_input[!is.na(troia_input$documentevaluation_credibility),]
write.table(troia_input_without_na, file="/Users/andi/Desktop/RECONCILE/troia_input_without_na.csv",row.names=FALSE, col.names=FALSE, sep=" ")

#z 0 zamiast NA
troia_input_with_zeros <- troia_input
troia_input_with_zeros[is.na(troia_input_with_zeros)]<-0
write.table(troia_input_with_zeros, file="/Users/andi/Desktop/RECONCILE/troia_input_with_zeros.csv",row.names=FALSE, col.names=FALSE, sep=" ")



#proste statystyki, wykresy
#biblioteki plyr uzyjemy do szybkiego wygenerowania podsumowan 
library(plyr)

#zwroci tabele zawierajaca w pierwszej kolumnie liczbe ile-krotnie strona zostala oceniona, a w drugiej ile stron z calego zbioru dotyczyla tylokrotna ocena.
#wariant wliczajacy NA
count(count(d_eval,"document_id"),"freq")
#plot(count(count(d_eval,"document_id"),"freq"))
b<-barplot(count(count(d_eval,"document_id"),"freq")$freq.1,main="Distribution of number of ratings per page (including 0 - \"don\'t know\")",names.arg=count(count(d_eval,"document_id"),"freq")$freq)
mtext(side = 1, at = b, text = paste("#:",count(count(d_eval,"document_id"),"freq")$freq.1), line = 3)

#wariant pomijajacy NA
count(count(troia_input_without_na,"document_id"),"freq")
#plot(count(count(troia_input_without_na,"document_id"),"freq"))
b<-barplot(count(count(troia_input_without_na,"document_id"),"freq")$freq.1,main="Distribution of number of ratings per page(without 0 - \"don\'t know\")",names.arg=count(count(troia_input_without_na,"document_id"),"freq")$freq)
mtext(side = 1, at = b, text = paste("#:",count(count(troia_input_without_na,"document_id"),"freq")$freq.1), line = 3)



temp<-aggregate(temp,by=list(temp$document_id), FUN=mean, na.rm=TRUE)

srednia<-function(lista) {
# print(lista)
sum1=0
sum2=0
for (i in 1:length(lista)){
	sum1=sum1+reated(lista[i])*notna(lista[i])
	sum2=sum2+reated(lista[i])
}
if (sum2!=0){
as.numeric(sum1/sum2)
}
else if(sum1==0){
as.numeric(0)
}
}



wariancja<-function(lista) {
sum1=0
sum2=0
srednia=srednia(lista)
for (i in 1:length(lista)){
	sum1=sum1+reated(lista[i])*(notna(lista[i])-srednia)^2
	sum2=sum2+reated(lista[i])
}
if (sum2!=0){
as.numeric(sum1/sum2)
}
else if(sum1==0){
as.numeric(0)
}
}




reated <- function(arg){
#if(is.na(arg)) 0 else 1
if(is.na(arg)){
	as.numeric(0)
}
else{
	as.numeric(1)
	}
}
notna <- function(arg){
if(is.na(arg)) 0 else arg
}

# co najmniej 2 oceny=5 -> strona trafia do klasy HC (Highly Credibly)
# co najmniej 2 oceny=4 -> strona trafia do klasy N (Neutral)
# co najmniej 2 oceny<4 -> strona trafia do klasy HNC (Highly Not Credible)
adamw_classifier<-function(lista){
#zamiana NA na 0
for (i in 1:length(lista)){ lista[i]=notna(lista[i]) }
#stworzenie data frameu z czestosciami wystapien poszczegolnych ocen dla strony
df<-data.frame(table(lista))
if ((5 %in% df$lista) && (df[df$lista==5,]$Freq >= 2)) {		
			#print("HC was assigned")
			return (3)#(as.character("HC"))
	}
else if ((4 %in% df$lista) && (df[df$lista==4,]$Freq >= 2)){
					#print("N was assigned")
					return (2)#(as.character("N"))
	}
else if (sum(df[as.numeric(levels(df$lista)[df$lista]) < 4,]$Freq) >=2){
			#print("HNC was assigned")
			return (1)#(as.character("HNC"))
	}
else{
	#print("UNDIFINED was assigned")
	return (0)#(as.character("UNDIFINED"))
	}
}




tmp<-troia_input
length(unique(tmp$document_id))
dane<-ddply(tmp,.(document_id),summarise,SREDNIA=srednia(documentevaluation_credibility),WARIANCJA=wariancja(documentevaluation_credibility),CLASS_ADAMW=adamw_classifier(documentevaluation_credibility))

kmeans_data<-matrix(c(dane$SREDNIA, dane$WARIANCJA),ncol=2)
kmeans_result<-kmeans(kmeans_data,sum(unique(dane$CLASS_ADAMW)))
plot(y=jitter(dane$WARIANCJA,amount=0.2),x=jitter(dane$SREDNIA,amount=0.2))
plot(y=jitter(dane$WARIANCJA,amount=0.2),x=jitter(dane$SREDNIA,amount=0.2),col=dane$CLASS_ADAMW)
plot(y=jitter(dane$WARIANCJA,amount=0.2),x=jitter(dane$SREDNIA,amount=0.2),col=kmeans_result$cluster)
points(kmeans_result$centers,col=6,pch=10,cex=3)

r CPI R代码

CPI R代码

cpi-convert.R
## function to get data
getCPI = function(cost1 = 1000, year1 = 2009, year2 = 2013) {
 library(RCurl)
 library(XML)
 ## endpoint
 EP = "http://data.bls.gov/cgi-bin/cpicalc.pl?"
 ## build the URL
 URL = paste0(EP, 
              "cost1=", cost1, "&",
              "year1=",  year1, "&", 
              "year2=",  year2)
 ## get and parse the HTML
 doc = getURL(URL)
 doc = htmlParse(doc)
 ## get the value
 value = xpathSApply(doc, '//*[@id="answer"]/text()', xmlValue)
 ## make numeric
 value.num = gsub("\\$", "", value)
 value.num = gsub(",", "", value.num)
 value.num = as.numeric(value.num)
 cat("values = ", value, " --- ", value.num, "\n")
}

r R生成具有给定分布的随机数据

R生成具有给定分布的随机数据

gistfile1.r
# Andrzej Kostanski adnrzej.kostanski@gmail.com

# sciezka do pliku z danym wejsciowymi  
input_path<-"/Users/andi/Desktop/EM-ALGORITHM/r-generowanie/input.csv"
output_path<-"/Users/andi/Desktop/EM-ALGORITHM/r-generowanie/output.csv"

con<-file(input_path)
# n oznacza liczbe wszystkich losowan
n<-readLines(con,1)
close(con)

# rozklady okreslone parametrami tau i mi, oraz pradopodobienstwo ich wyboru
rozklady<-read.csv(input_path,skip=1,header=TRUE)


# losuje n-razy rozklady zgodnie z prawdopodibenstwem ich wystapienia (tau), w liście zapisuję indeksy
idx<-sample(1:nrow(rozklady),size=n,replace=TRUE,prob=rozklady$tau)

# deklarujemy pusty data frame z 2 kolumnami na n wierszy (bardziej efektywnie niz pusty a potem w kazdej iteracji rozszerzac)
output<-data.frame(X = numeric(n), Klasa = character(10), stringsAsFactors=FALSE)

# iterujemy by wylosowac liczby zgodnie z rodzajem rozkladu wylosowanym wczesniej, zapisujemy do outputs otrzymana wartosci i informacje nt klasy rozkladu
for (i in 1:n){
  val<-rnorm(1, rozklady[idx[i],]$tau, rozklady[idx[i],]$sigma )  
  output[i,]<-c(val,LETTERS[idx[i]])
}

# zapis do pliku n par x, klasa
write.csv(output,output_path,row.names=FALSE)

r R重命名数据框列

R重命名数据框列

gistfile1.r
d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
# alpha beta gamma
#     1    4     7
#     2    5     8
#     3    6     9

names(d)  
# "alpha" "beta"  "gamma"
The simplest way is to use rename() from the plyr package:

rename(d, c("beta"="two", "gamma"="three"))
# alpha two three
#     1   4     7
#     2   5     8
#     3   6     9

r R聚合DataIt使用一个或多个BY变量和一个已定义的函数相对容易地折叠R中的数据.http://www.statmetho

R聚合DataIt使用一个或多个BY变量和一个已定义的函数相对容易地折叠R中的数据.http://www.statmethods.net/management/aggregate.html

gistfile1.r
# aggregate data frame mtcars by cyl and vs, returning means
# for numeric variables
attach(mtcars)
aggdata <-aggregate(mtcars, by=list(cyl,vs), 
  FUN=mean, na.rm=TRUE)
print(aggdata)
detach(mtcars)