dirty_iris <- read.csv("https://raw.githubusercontent.com/edwindj/datacleaning/master/data/dirty_iris.csv")
dirty_iris <- read.csv("https://raw.githubusercontent.com/edwindj/datacleaning/master/data/dirty_iris.csv")
sum(is.na(dirty_iris$Sepal.Length))
[1] 10
percent_complete <- (num_complete / nrow(dirty_iris)) * 100
cat("Number of complete observations:", num_complete, "\n")
Number of complete observations: 96
cat("Percentage of complete observations:", percent_complete, "%\n")
Percentage of complete observations: 64 %
cat("Number of Inf values in numeric columns:\n")
Number of Inf values in numeric columns:
print(inf_values)
Sepal.Length Sepal.Width Petal.Length Petal.Width
0 0 0 1
cat("\nNumber of NaN values in numeric columns:\n")
Number of NaN values in numeric columns:
print(nan_values)
Sepal.Length Sepal.Width Petal.Length Petal.Width
0 0 0 0
cat("Special values have been replaced with NA.\n")
Error: unexpected symbol in:
"
cat"
invalid_sepal_width <- dirty_iris$Sepal.Width <= 0
invalid_sepal_length <- dirty_iris$Sepal.Length > 30
invalid_rows <- which(invalid_sepal_width | invalid_sepal_length)
num_violations <- length(invalid_rows)
cat("Number of observations violating the rules:", num_violations, "\n")
Number of observations violating the rules: 4
cat("Rows violating the rules:\n")
Rows violating the rules:
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpgYGB7cn0KZGlydHlfaXJpcyA8LSByZWFkLmNzdigiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vkd2luZGovZGF0YWNsZWFuaW5nL21hc3Rlci9kYXRhL2RpcnR5X2lyaXMuY3N2IikKc3VtKGlzLm5hKGRpcnR5X2lyaXMkU2VwYWwuTGVuZ3RoKSkKYGBgCmBgYHtyfQpudW1fY29tcGxldGUgPC0gc3VtKGNvbXBsZXRlLmNhc2VzKGRpcnR5X2lyaXMpKQoKcGVyY2VudF9jb21wbGV0ZSA8LSAobnVtX2NvbXBsZXRlIC8gbnJvdyhkaXJ0eV9pcmlzKSkgKiAxMDAgCmNhdCgiTnVtYmVyIG9mIGNvbXBsZXRlIG9ic2VydmF0aW9uczoiLCBudW1fY29tcGxldGUsICJcbiIpCmBgYApgYGB7cn0KY2F0KCJQZXJjZW50YWdlIG9mIGNvbXBsZXRlIG9ic2VydmF0aW9uczoiLCBwZXJjZW50X2NvbXBsZXRlLCAiJVxuIikKYGBgCmBgYHtyfQoKCm51bWVyaWNfY29scyA8LSBzYXBwbHkoZGlydHlfaXJpcywgaXMubnVtZXJpYykKCmluZl92YWx1ZXMgPC0gc2FwcGx5KGRpcnR5X2lyaXNbLCBudW1lcmljX2NvbHNdLCBmdW5jdGlvbih4KSBzdW0oaXMuaW5maW5pdGUoIHgpKSkKbmFuX3ZhbHVlcyA8LSBzYXBwbHkoZGlydHlfaXJpc1ssIG51bWVyaWNfY29sc10sIGZ1bmN0aW9uKHgpIHN1bShpcy5uYW4oeCkpKQoKY2F0KCJOdW1iZXIgb2YgSW5mIHZhbHVlcyBpbiBudW1lcmljIGNvbHVtbnM6XG4iKQpgYGAKCgpgYGB7cn0KcHJpbnQoaW5mX3ZhbHVlcykKYGBgCgpgYGB7cn0KY2F0KCJcbk51bWJlciBvZiBOYU4gdmFsdWVzIGluIG51bWVyaWMgY29sdW1uczpcbiIpCmBgYAoKYGBge3J9CnByaW50KG5hbl92YWx1ZXMpCmBgYAoKYGBge3J9Cm51bWVyaWNfY29scyA8LSBzYXBwbHkoZGlydHlfaXJpcywgaXMubnVtZXJpYykKCmRpcnR5X2lyaXNbLCBudW1lcmljX2NvbHNdIDwtIGxhcHBseShkaXJ0eV9pcmlzWywgbnVtZXJpY19jb2xzXSwgZnVuY3Rpb24oeCl7CiAgeFtpcy5pbmZpbml0ZSh4KV0gPC0gTkEgCiAgeFtpcy5uYW4oeCldIDwtIE5BCiAgcmV0dXJuKHgpCn0KCmNhdCgiU3BlY2lhbCB2YWx1ZXMgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggTkEuXG4iKQoKYGBgCgpgYGB7cn0KaW52YWxpZF9zZXBhbF93aWR0aCA8LSBkaXJ0eV9pcmlzJFNlcGFsLldpZHRoIDw9IDAKaW52YWxpZF9zZXBhbF9sZW5ndGggPC0gZGlydHlfaXJpcyRTZXBhbC5MZW5ndGggPiAzMCAKaW52YWxpZF9yb3dzIDwtIHdoaWNoKGludmFsaWRfc2VwYWxfd2lkdGggfCBpbnZhbGlkX3NlcGFsX2xlbmd0aCkgCm51bV92aW9sYXRpb25zIDwtIGxlbmd0aChpbnZhbGlkX3Jvd3MpIApjYXQoIk51bWJlciBvZiBvYnNlcnZhdGlvbnMgdmlvbGF0aW5nIHRoZSBydWxlczoiLCBudW1fdmlvbGF0aW9ucywgIlxuIikKYGBgCgpgYGB7cn0KY2F0KCJSb3dzIHZpb2xhdGluZyB0aGUgcnVsZXM6XG4iKQpgYGAKCmBgYHtyfQpwcmludChkaXJ0eV9pcmlzW2ludmFsaWRfcm93cywgXSkKYGBgCgo=