导入由新行分隔的文本文件

时间:2018-04-01 08:33:39

标签: r data.table sapply rbindlist

最终,我需要创建下表:

ID Age Gender
1  25  F
2  14  M

等等。 。 。

我在许多txt文件中获取了数据,其中ID是文件的名称。 年龄和性别由新行分隔,例如:

Age: 25
Gender: F

现在,我将所有文件合并到一个数据表中,文件路径作为ID列(稍后我将用stringr删除整个路径)

all_test <- list.files(path = "my/file/path", full.names=T)
dtt <- rbindlist( sapply(all_test, fread, simplify = FALSE, sep=":", sep2=" "),use.names = TRUE, idcol = "ID" )

这是我的问题 - 我得到了下表:

ID V1     V2
1  Age    25
2  Gender F

我尝试使用sep = "\n"但它没有做任何事情。如何告诉R每个变量在不同的行? (最好是data.table)

1 个答案:

答案 0 :(得分:4)

一种可行的方法是使用darkening = textureProj(uShadowTexture, vec4(vShadowCoord.xy, vShadowCoord.z - bias, 1.0)) + (vShadowBorderFactor * vShadowBorderFactor); 重新整理为宽格式,并使用$(document).ready(function() { var horizonalLinePlugin = { afterDraw: function(chartInstance) { var yScale = chartInstance.scales["y-axis-0"]; var canvas = chartInstance.chart; var ctx = canvas.ctx; var index; var line; var strokeStyle; var fillStyle; if (chartInstance.options.horizontalLine) { for (index = 0; index < chartInstance.options.horizontalLine.length; index++) { line = chartInstance.options.horizontalLine[index]; if (!line.strokeStyle) { strokeStyle = "rgba(169, 169, 169, 0.6)"; } else { strokeStyle = line.strokeStyle; } if (!line.fillStyle) { fillStyle = 'rgba(179, 26, 57, 0.5)'; } else { fillStyle = line.fillStyle; } if (line.y) { yValue = yScale.getPixelForValue(line.y); } else { yValue = 0; } ctx.lineWidth = 3; if (yValue) { ctx.beginPath(); ctx.moveTo(0, yValue); ctx.lineTo(canvas.width, yValue); ctx.fillStyle = fillStyle; ctx.fill(); ctx.strokeStyle = strokeStyle; ctx.stroke(); } if (line.text) { ctx.fillStyle = fillStyle; ctx.fillText(line.text, 0, yValue + ctx.lineWidth); } } return; }; } }; Chart.pluginService.register(horizonalLinePlugin); }); 将列添加到正确的类中:

dcast

给出:

type.convert

示例数据:

DTnew <- dcast(DT, ID ~ V1, value.var = 'V2')[, (2:3) := lapply(.SD, type.convert), .SDcols = 2:3][]