我在尝试从似乎只有一列的数据集中删除行时遇到问题 - 因此它就像一个列向量。我正在尝试做两件事,首先(对我而言)并不重要。以下是数据示例:
共和党人,n,y,n,y,y,y,n,n,n,n,n,y,y,y,n,y
民主党人,y,y,y,n,n,n,y,y ,y,n,n,n,n,n,?,?
我正在引入这样的数据:
sampledata <- read.table("house-votes-84.data",)
但我想将每行的数据字符串转换为一列并为该列命名。现在我知道我可以通过以下方式命名事物:
names(sampledata) <- c("col1" ...., "col17")
但只有在有 17 列时才能这样做。每个将是列由逗号分隔。
其次,我正在尝试摆脱带有问号的行?
我试过什么?
我已经尝试过诸如(我的数据称为示例数据):
sampledata[apply(sampledata[, -1], MARGIN = 1, function(x) all(x != "?")), ]
那是行不通的(我猜是因为只有一列,所以 Margin 必须是每一列都会被查看的东西(我尝试了 -1 作为 Margin 但无济于事)
我尝试将 ? 更改为 NA 并使用
na.omit(sampledata)
那也行不通。
我试过用逗号解析,比如
splitting <- strsplit(as.character(sampledata$V1), split=",")
其中 V1 是单列名称。这是我得到的最有趣的结果
以下435条(有435行数据)
_[[435]]_
_ [1] "republican" "n" "y" "n" "y" _
_ [6] "y" "y" "n" "n" "n" _
_[11] "y" "n" "y" "y" "y" _
_[16] "NA" "n"_
但是当我尝试更改名称时:错误
names(sampledata) <- c("col1", "col2", "col3", "col4", "col5", : 'names' attribute [17] must be the same length as the vector [1]
我已经尝试过其他事情,例如尝试将其转换为数据集 - 然而,这似乎将所有值转换为看起来是随机的数字(不是诸如 0、1 或 99 之类的?,而是值甚至多达 100 个,甚至更多)
我只是想以正确的格式获取数据,以便我可以对没有问号的样本进行回归。
我最幸运的网站是 Stack Exchange Also 并且在这里:
和这里:
使用第一个,我可以让它工作,但即使这样,我也在代码本身的 3 列中生成数据 - 我似乎无法让相同的代码在我的 ? 上工作(尽管我可以得到使用以下方法删除带有问号的行的程序:
X <- data.frame(Variable1=c(11,"?",12,15),Variable2=c(2,3,1,4))
X[X$Variable1!="?", ]
我一直在尝试找出一种方法来制作代码,逐行对导入的数据执行相同的操作,因为我也将其作为 data.frame 拉入(我意识到我只有 1 列,该列是称为 V1,所以我同样将代码更改为
X$V1
sampledata <- read.table("house-votes-84NaN.data.txt")
splitdat = do.call("rbind", strsplit(sampledata$V1, ","))
但我明白了
**Error in strsplit(sampledata$V1, ",") : non-character argument**
我确实意识到我在 read.table 中需要更多参数(我认为),因为它们还有更多参数 - 但我不明白需要输入什么。
任何帮助将不胜感激。
谢谢,
布赖恩