我是R
的新用户,并按如下方式导入了我的数据集(点表示有剩余数据):
> num.csv <- read.csv("c:/num.csv", header=T)
> print(num.csv)
X.Y
1 22500;482
2 25842;1
3 27221;1
4 32757;1
5 40152;1
. .
. .
. .
如何为此数据制作散点图?
感谢。
答案 0 :(得分:8)
首先,数据需要位于不同的列中。虽然文件标记为“csv”,但您似乎使用分号分隔而不是逗号。重新格式化文件或尝试:
num.csv <- read.csv("c:/num.csv", header=T, sep=";")
然后您可以使用R中的各种绘图包中的一个来制作绘图。例如:
install.packages("ggplot2"); #ggplot2 is not part of the standard install...
library(ggplot2);
qplot(X, Y, data=num.csv);
我没有测试过上面的内容,这取决于你的数据框是如何从read.csv出来的。
答案 1 :(得分:4)
@ patrickmdmnet的答案是要走的路,但我有点好奇,只是想尝试一个程序化的解决方案。我对R strplit()函数的工作方式非常好奇:
# Test matrix
tmp.mtrx <- matrix(c("1;2", "3;4", "5;6", "7;8"), ncol=1)
# The split
tmp.split <- strsplit(tmp.mtrx, ";")
# Put it all together into a new matrix
new_matrix <- matrix(tmp.split[[1]], ncol=2)
for(i in 2:length(tmp.split)){
new_matrix <- rbind(new_matrix, tmp.split[[i]])
}
# Do the plot originally asked for
plot(new_matrix[,1], new_matrix[,2])
@ Chl - 我正在寻找unlist函数,它使解决方案更好而没有循环虽然因为我已经编程了很多我经常发现如果它没有太多我的代码更可读更好对性能影响很大。这是Chl在一个稍微复杂的矩阵中的解决方案:
# Test matrix
tmp.mtrx <- matrix(c("1;2", 55, "3;4", 75, "5;6", 85, "7;8", 88), ncol=2)
# The split
tmp.split <- strsplit(tmp.mtrx, ";")
# A vector with all the values, length = (ncol(tmp.mtrx) + 1)*nrow(tmp.mtrx)
tmp.data_vector <- unlist(tmp.split)
# Put it all together into a new matrix
new_matrix <- matrix(tmp.data_vector, ncol=(ncol(tmp.mtrx)+1), byrow=TRUE)
# Do the plot originally asked for
plot(new_matrix[,1], new_matrix[,2])